[Vm-dev] Method executing but not sent to the receiver

Levente Uzonyi leves at elte.hu
Tue Jun 7 20:57:38 UTC 2011


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

>
> Cheers,
>  - Andreas
>
>


More information about the Vm-dev mailing list