Mantis - Squeak
Viewing Issue Advanced Details
7384 VM minor always 08-18-09 11:37 04-19-10 02:48
lewis  
lewis  
normal  
resolved  
fixed  
none    
none  
0007384: GeniePlugin does not compile on closure-enabled images
Plugin source (and hence VMMaker package) does not load in a closure-enabled image due to too many method temporary variables.
Discussed on vm-dev, pharo, and squeak-dev lists in May 2009.
related to 0007382new  loading Genie into trunk fails with closure errors 
 GeniePlugin-closureFix-dtl-M7384.1.cs [^] (9,391 bytes) 08-18-09 11:47

Notes
(0013237)
lewis   
08-18-09 11:54   
The fix is included in VMMaker-dtl.135 on SqueakSource
(0013242)
simon   
08-21-09 02:06   
On squeak-dev, I confirmed Genie now installs in 3.10.2 image if you follow eg. this procedure:

- use the latest 4.2.1beta1U vm
- install VMMaker from Package Universe (or install the dependencies directly)
- install latest VMMaker .135 from http://squeaksource.com/VMMaker [^]
- install Genie from Package Universe

I think this must have been 3.10.2-7179; I haven't found a way to do it with latest 3.10 trunk, due to other installation problems there (FFI, VMMaker).
(0013718)
simon   
04-18-10 23:30   
Thanks for updating this, unfortunately the issue remains so I'm re-opening.

I tried loading Genie.67 from squeaksource into Squeak 4.1, and got Error: genPushClosureCopyNumCopiedValues:numArgs:jumpSize: num copied index 16 is out of range 0 to 15 error. A simpler way to reproduce is to try saving the problem method, see http://gist.github.com/raw/370604/5e768cdc8282c6c5e891cf4cc69ec8a521aabe29/gistfile1.txt [^] .

I tried the workaround procedure I reported in '09, but that no longer works. VMMaker.135 no longer loads in 4.1, and latest VMMaker.169 has no effect on this issue.
(0013719)
lewis   
04-19-10 02:40   
Hi Simon, the problem that you are encountering in Genie is very similar to the one that I addressed for GeniePlugin. The new closure compiler restricts the number of temporary variables for a method (formerly was 16, now 15) due to some internal limitations. The solution that I implemented for the GeniePlugin was to rewrite the problem method to reduce the number of temporary variables used in the method. Most likely you will need to do something similar for the #multiResLocalLookup:symmetric:result:alreadyIncludedRes: method in order to get it to compile. You will need to make a fix in the Genie package itself in order to get this working.
(0013720)
lewis   
04-19-10 02:48   
This Mantis issue is for the GeniePlugin, for which a fix has been provided. For that reason, I am setting status back to "resolved".

An additional (and similar) issue exists in the Genie package (now maintained on SqueakSource). This will need to be addressed separately, and will require a rewrite of at least one method in the Genie package to support loading into images with the closure compiler.