[squeak-dev] Re: Closures in Trunk

Andreas Raab andreas.raab at gmx.de
Mon Jul 20 04:22:11 UTC 2009


Ken Causey wrote:
> So I took my trusty working.image updates yesterday or the day before
> and started it using the 0.15.1 exupery squeak vm and closed everything
> but the Transcript (just to be safe) and did a load code updates from
> server.  It chokes on Kernel-ar.188 with an error "Method context cannot
> be changed".  Debug log attached.

Bummer. So much for testing the bootstrap - I didn't have the previous 
versions in the test setup and consequently no MCDs were generated, and 
nobody ran into the problem. As usual, there is good news and bad news. 
The good news: There is an easy workaround; just run this before you try 
the update:

(MethodContext instVarNames includes: 'receiverMap') ifTrue:[
	MethodContext instVarNames at: 2 put: 'closureOrNil'.
].

The bad news: It appears as if MCDs drop preambles. Plus, I am not sure 
I understand the situations under which MCDs are used. For example, I 
when (after the error) I tried loading that particular Kernel package, 
it worked although I had somewhat expected it to use a diff, too. So 
this might be another way to do it. If anyone can shed light on the 
behavior of MCDs, when they are created etc. this would be greatly 
appreciated.

And of course, if all else fails, download the image.

Cheers,
   - Andreas



More information about the Squeak-dev mailing list