<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"><<a href="mailto:lewis@mail.msen.com" target="_blank">lewis@mail.msen.com</a>></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>
><br>
> On Tue, Jul 7, 2015 at 1:31 PM, David T. Lewis <<a href="mailto:lewis@mail.msen.com">lewis@mail.msen.com</a>> wrote:<br>
> > I am away and cannot follow up on this for a while.<br>
> ><br>
> > My guess would be that there is something wrong in the compiler, and that<br>
> > it needs to be fixed (but I cannot check now to find out). I don't know if<br>
> > this affects SqueakJS or other VMs.<br>
> ><br>
> > Dave<br>
><br>
> Maybe the problem is in the image, the interpreter VM or the<br>
> TwosComplement package, we don't know. Since it does not appear<br>
> likely anyone will be able to investigate it soon, and the nature of<br>
> both releases is about all-new VM(s) anyway, we probably should not<br>
> hold up the release over this.<br>
><br>
> In fact, I could make another RC without the recompileAll. Is it<br>
> really necessary? I don't know any better about its purpose than why<br>
> it would be a problem. I guess anyone could do it on their own if<br>
> they wanted..<br>
><br>
<br>
</span>OK, I'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>>sizeCodeForEvaluatedClosureValue:<br>
BlockNode>>emitCodeForEvaluatedClosureValue:encoder:<br>
<br>
Reverting these two methods fixes the problem.<br>
<br>
I don'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 "push N nils" that allows the Sista bytecode set to use its "pushNClosureNils" 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't see how the changes cause the crash. The changes have no effect in the Encoder in effect in the release image. I'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>