A possible Cog bug (was: Re: [squeak-dev] Direct implementation of shift/reset in Smalltalk)

Levente Uzonyi leves at elte.hu
Mon Apr 25 03:35:30 UTC 2011


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)"


Levente



More information about the Squeak-dev mailing list