<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Dec 18, 2015 at 11:25 PM, Robert Withers <span dir="ltr">&lt;<a href="mailto:robert.w.withers@gmail.com" target="_blank">robert.w.withers@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> <br>
  
    
  
  <div text="#000000" bgcolor="#FFFFFF">
    <br>
    <br>
    <div>On 12/19/2015 02:09 AM, Eliot Miranda
      wrote:<br>
    </div>
    <blockquote type="cite">
      <pre> </pre>
      <br>
      <fieldset></fieldset>
      <br>
      
      <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" target="_blank"></a><a href="mailto:robert.w.withers@gmail.com" target="_blank">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.  See
      <div><br>
        <div><a href="http://www.mirandabanda.org/cogblog/on-line-papers-and-presentations/" target="_blank">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>
      </div>
    </blockquote>
    <br>
    This sounds like you are saying that Sista performs better or more
    naturally with stack-oriented bytecode. If you wouldn&#39;t mind taking
    the time to explore it with us, what&#39;s the difference between
    stack-oriented and register-based code, such that Sista would be
    different between them? I&#39;m off to read some.<br></div></blockquote><div><br></div><div>I&#39;d rather not. That&#39;s something there&#39;s lots of papers on, and I&#39;m not sure it&#39;s really important that I explain.  Yoiu can inform yourself, and the Sista talks I pointed to at least mention the topic.  I will say that our thesis is that we can generate efficient register-based machine code from stack-oriented bytecode, and that&#39;s one of the things we&#39;re trying to demonstrate with Sista.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div text="#000000" bgcolor="#FFFFFF">
    <br>
    <br>
    <blockquote type="cite">
      <div>
        <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 &lt;<a href="mailto:lewis@mail.msen.com" target="_blank">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&#39;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&#39;s get it working 100% (not &quot;to a</span><br>
                  </blockquote>
                </blockquote>
                <blockquote type="cite">
                  <blockquote type="cite"><span>degree&quot;) 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>
    </blockquote>
    <br>
    <div>-- <br>
      <div align="left">. .. .. ^,^ robert
      </div>
    </div>
  </div>

<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div><span style="font-size:small;border-collapse:separate"><div>_,,,^..^,,,_<br></div><div>best, Eliot</div></span></div></div></div>
</div></div>