<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 <<a href="mailto:robert.w.withers@gmail.com">robert.w.withers@gmail.com</a>> 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. 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. 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>. .. ... ^,^</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> 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 <<a href="mailto:lewis@mail.msen.com">lewis@mail.msen.com</a>> 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>