<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div>Hi Robert,<br><br></div><div>On Dec 18, 2015, at 9:51 PM, Robert Withers &lt;<a href="mailto:robert.w.withers@gmail.com">robert.w.withers@gmail.com</a>&gt; wrote:<br><br></div><blockquote type="cite"><div><span>Eliot, what does Sista do and how is that accomplished? </span></div></blockquote><div><br></div>Run-time adaptive optimisation via an SSA-based image-level bytecode-to-bytecode inlining compiler. &nbsp;See<div><br><div><a href="http://www.mirandabanda.org/cogblog/on-line-papers-and-presentations/">http://www.mirandabanda.org/cogblog/on-line-papers-and-presentations/</a></div><div><br><div><br><blockquote type="cite"><div><span>It sounds like a next level kind of system. Does it compare to what other JITs are doing in various VMs?</span><br></div></blockquote><div><br></div>Yes it does. ClĂ©ment recently attended a workshop at Google and found that Sista is very similar in the kinds of optimisations it performs to V8 and Dart. &nbsp;The key research funding will be how close the performance of targeting stack-oriented bytecode that the Cog JIT converts to register-based code can be made to JITs that directly target register-based machine code.</div><div><span style="background-color: rgba(255, 255, 255, 0);"><br></span></div><div><span style="background-color: rgba(255, 255, 255, 0);">_,,,^..^,,,_ (phone)</span></div><div><span style="background-color: rgba(255, 255, 255, 0);"><br></span></div><div><blockquote type="cite"><div><span></span><br><span>thank you,</span><br><span>robert</span><br><span></span><br><span>. &nbsp;&nbsp;&nbsp;.. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;... &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^,^</span><br><span></span><br><span></span><br><span></span><br><span>On 12/18/2015 11:11 PM, Eliot Miranda wrote:</span><br><blockquote type="cite"><span> &nbsp;Further, please keep the original Smalltalk non-primitive implementation around do that when we deliver Sista we can see how well we stack up against C.</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span>_,,,^..^,,,_ (phone)</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><blockquote type="cite"><span>On Dec 18, 2015, at 5:59 PM, David T. Lewis &lt;<a href="mailto:lewis@mail.msen.com">lewis@mail.msen.com</a>&gt; wrote:</span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span></span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span></span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><span>On Fri, Dec 18, 2015 at 08:13:00PM -0500, Robert Withers wrote:</span><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><span></span><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><span>On 12/18/2015 08:07 PM, David T. Lewis wrote:</span><br></blockquote></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><span></span><br></blockquote></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><span>If you are implementing your algorithm from scratch, then it would be</span><br></blockquote></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><span>nice if it could be done in Smalltalk, because that means we can all</span><br></blockquote></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><span>read it, play with it in the image, and write unit tests to validate and</span><br></blockquote></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><span>document its behavior. We can figure out the translation to C afterwords,</span><br></blockquote></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><span>once you have a good implementation in Smalltalk (and yes I will help</span><br></blockquote></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><span>with that).</span><br></blockquote></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><span>I have a smalltalk implmentation that came from Google Java code and is</span><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><span>fully implemented in squeak/pharo. I am intermittently fixing byte</span><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><span>mutations in the payload, so it is working to a degree. Check out the</span><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><span>classes GenericGF, GenericGFPoly and GaloisField to see the insides.</span><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><span>FECEncoder and FECDecoder are calling the galoisField which builds a</span><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><span>ReedSolomon Decoder. That last is where the error detection occurs.</span><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><span></span><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><span>Thank you all very much for looking out!</span><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span>I guess my suggestion would be that once you have a fairly good working</span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span>implementation that you are comfortable with from a functional point of</span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span>view, then let's look at which methods in that implementation would benefit</span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span>from being translated to primitives in C. It would be especially good if</span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span>you can run a profiler on your Smalltalk implementation and see where the</span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span>time is being spent. Those would be the things we would want to turn into</span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span>primitives. But first things first, let's get it working 100% (not "to a</span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span>degree") and then we can do the translation to primitives.</span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span></span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span>Dave</span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span></span><br></blockquote></blockquote><span></span><br><span>-- </span><br><span>. .. .. ^,^ robert</span><br></div></blockquote></div></div></div></body></html>