<div dir="ltr">Hi David,<br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jul 7, 2015 at 4:33 PM, David T. Lewis <span dir="ltr">&lt;<a href="mailto:lewis@mail.msen.com" target="_blank">lewis@mail.msen.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Tue, Jul 07, 2015 at 02:34:48PM -0500, Chris Muller wrote:<br>
&gt;<br>
&gt; On Tue, Jul 7, 2015 at 1:31 PM, David T. Lewis &lt;<a href="mailto:lewis@mail.msen.com">lewis@mail.msen.com</a>&gt; wrote:<br>
&gt; &gt; I am away and cannot follow up on this for a while.<br>
&gt; &gt;<br>
&gt; &gt; My guess would be that there is something wrong in the compiler, and that<br>
&gt; &gt; it needs to be fixed (but I cannot check now to find out). I don&#39;t know if<br>
&gt; &gt; this affects SqueakJS or other VMs.<br>
&gt; &gt;<br>
&gt; &gt; Dave<br>
&gt;<br>
&gt; Maybe the problem is in the image, the interpreter VM or the<br>
&gt; TwosComplement package, we don&#39;t know.  Since it does not appear<br>
&gt; likely anyone will be able to investigate it soon, and the nature of<br>
&gt; both releases is about all-new VM(s) anyway, we probably should not<br>
&gt; hold up the release over this.<br>
&gt;<br>
&gt; In fact, I could make another RC without the recompileAll.  Is it<br>
&gt; really necessary?  I don&#39;t know any better about its purpose than why<br>
&gt; it would be a problem.  I guess anyone could do it on their own if<br>
&gt; they wanted..<br>
&gt;<br>
<br>
</span>OK, I&#39;m back now.<br>
<br>
The problem was introduced in Compiler-eem.300, which does this:<br>
<br>
    Use the size/emitPushNClosureTemps: api in block generation.<br>
<br>
There are two affected methods:<br>
<br>
    BlockNode&gt;&gt;sizeCodeForEvaluatedClosureValue:<br>
    BlockNode&gt;&gt;emitCodeForEvaluatedClosureValue:encoder:<br>
<br>
Reverting these two methods fixes the problem.<br>
<br>
I don&#39;t know the background on this change but my guess would be that<br>
it is something that works on a stack interpreter but not on a context<br>
interpreter, so maybe the methods need to be tweaked to account for the<br>
difference.<br></blockquote><div><br></div><div>It should make no difference to the code produced.  It adds a new way of saying &quot;push N nils&quot; that allows the Sista bytecode set to use its &quot;pushNClosureNils&quot; bytecode to push several nils in one bytecode.  But with the standard encoder EncoderForV3PlusClosures exactly the same code as the previous version should be produced.</div><div><br></div><div>How do the changes in the compiler cause the crash?</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
I would suggest rolling back these two methods until after the 4.6<br>
release, see Compiler-dtl.303 in the inbox.<br>
<br>
Eliot, does that sound right?<br></blockquote><div><br></div><div>No.  I don&#39;t see how the changes cause the crash.  The changes have no effect in the Encoder in effect in the release image.  I&#39;d like to understand how the crash occurs before rolling back.  </div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Thanks,<br>
Dave<br>
<br>
<br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">best,<div>Eliot</div></div>
</div></div>