Hi All,

�� �find new VMs in�VM.r2342/�(SimpleStackBasedCogit) and�VM.r2343/�(StackToRegisterMappingCogit). �2343 seems fine but I appear to have introduced a regression into 2342. �The 2343 VMs fix both of the bugs mentioned by Matthew and Yoshiki:

This now evaluates to nil as intended:
| a | a := false. [a ifFalse: [Error signal]] on: Error do: [:ex | a := true. ex retry]

This no longer provokes a must-be-boolean error:
BooleanArrayUser new loop1

As usual I'm very grateful for you pounding on these (ok, at least the 2343 VM :) ).

best
Eliot

On Fri, Jan 7, 2011 at 10:10 AM, Eliot Miranda <eliot.miranda@gmail.com> wrote:
Hi Matthew, Hi Yoshiki,


�� thanks very much for this. �I have a fix which I should be able to roll out this evening or tomorrow. �The problem was that the run-time code that assigns inst vars of contexts was not preserving the register holding the receiver although the code generator thought it was. �So in MethodContext>>#privRefresh a subsequent reference to a context inst var failed because the register assumed to be holding the context got trashed. �There was another bug which caused the code generator's "simulation stack" (its main optimization data structure) to be off by one for context inst var assigns. �Hopefully these two fixes will fix Yoshiki's bug also. �Yoskhiki, do you have a more reliable way of reproducing that bug?

best
Eliot

On Thu, Jan 6, 2011 at 6:40 PM, Matthew Fulmer <tapplek@gmail.com> wrote:

On Thu, Jan 06, 2011 at 09:27:14PM -0500, Matthew Fulmer wrote:
>
> In Cog release 2341, as distributed at
> http://www.mirandabanda.org/files/Cog/VM/VM.r2341/
>
> this causes an MNU. It should evaluate to true:
>
> | a | a := false. [a ifFalse: [Error signal]] on: Error do: [:ex | a := true. ex retry]

actually it should evaluate to nil

--
Matthew Fulmer (a.k.a. Tapple)