Mantis - Squeak
Viewing Issue Advanced Details
7534 Kernel major always 05-18-10 22:11 04-03-11 22:49
closed 4.1  
none 4.2  
0007534: Perform primitive: fails if method having many arguments
The perform primitive using the currently active context to push
all of the arguments on it, and then do normal send.

But a sender context may be not be big enough (small frame) to accomodate
all pushed values.
Therefore, for methods with many arguments, a primitive may fail.

The proposed fix is to make sure that Object>>#perform:withArguments:
is using a large stack frame size, so when a primitive 84 fails,
and Object>>#perform:withArguments: will be activated,
there will be enough space to push all arguments on context stack
and retry with primitive 100.

 perform-framesize.1.cs [^] (865 bytes) 05-18-10 22:11

04-03-11 22:49   
The fix is included in Squeak 4.2.