[squeak-dev] Re: [Vm-dev] Re: A possible Cog bug

Frank Shearar frank.shearar at angband.za.org
Mon Apr 25 18:19:00 UTC 2011


On 2011/04/25 16:55, Levente Uzonyi wrote:
>
> On Mon, 25 Apr 2011, Frank Shearar wrote:
>
>>
>> On 2011/04/25 04:35, Levente Uzonyi wrote:
>>> On Sun, 24 Apr 2011, Levente Uzonyi wrote:
>>>
>>> snip
>>>
>>>> it didn't work for some reason. The execution always ran into the
>>>> error 'computation has been terminated' in MethodContext >>
>>>> #cannotReturn: and the method context (which stitches the continuation
>>>> onto the stack) was broken (nil in temporaries where should be non nil
>>>> values). Finally I tried it in SqueakVM instead of Cog and it worked.
>>>> The tests are green, the example code
>>>
>>> I tracked down this issue a bit more. The cause of the problem is that
>>> with CogVM the pc of thisContext is being set to nil when the execution
>>> leaves the context. This means, that [thisContext copy] will not be able
>>> to copy the pc of the context:
>>>
>>> { thisContext pc. thisContext copy pc } "==> #(23 nil)"
>>
>> That would explain why I didn't come across it: I wrote the library on
>> the SqueakVM.
>
> Not exactly. Your serialization method works with Cog, because the
> problem occurs when #copy is sent to thisContext. Since your method is
> serializing the contexts and all their variables separately to a
> collection, therefore it works.

Oh, right. I didn't see that distinction because, on the SqueakVM, your 
refactoring worked!

frank



More information about the Squeak-dev mailing list