Hi Levente,  Hi David,

On Tue, Jun 7, 2011 at 1:57 PM, Levente Uzonyi <leves@elte.hu> wrote:
On Wed, 20 Apr 2011, Andreas Raab wrote:


On 4/20/2011 14:29, Mariano Martinez Peck wrote:
CompiledMethod >> valueWithReceiver: aReceiver arguments: anArray
   "Execute compiledMethod against the receiver and args in argArray. The receiver is the CompiledMethod"

<primitive: 666>
   self primitiveFailed


Where the primitive is send directly, and not a message to the receiver.

Is something like this available or I would need to create a new primitive?

Which by the way, is the primitive that should exist, and Object>>withArgs:executeMethod: should be nuked ASAP. There is no reason to pollute the Object namespace any more than absolutely necessary.

The solution already exists in Cog: primitive 188 can accept a third argument - the receiver, but it doesn't work if the CompiledMethod is quick. In this case the VM crashes. It does work with "normal" methods.

I prepared an image with a workspace in it demonstrating the bug:
http://leves.web.elte.hu/squeak/primitive188bug.zip

If primitive 188 works reliably, then this feature can be added to the interpreter VM too.

Levente, this is fixed in VMMaker.oscog-eem.75 & http://www.mirandabanda.org/files/Cog/VM/VM.r2394/.  David, the VMMaker package contains a putative fix for Interpreter.  Feel free to integrate it into the interpreter.

best,
Eliot



Levente


Cheers,
 - Andreas