[squeak-dev] Re: Bug with valueWithReceiver:arguments:

Antoine Marot amarot at ulb.ac.be
Sun Nov 23 16:51:42 UTC 2008


>> Does anyone know approximately when this fix should be added to an  
>> official release ? This bug seriously makes it hard for me to share  
>> my code...
>
> I understand that what you need is "... method  
> valueWithReceiver:arguments: is used hugely with method wrappers"  
> and you need it without VM bug when a primitive fails.
>
> Perhaps a stupid question (I don't know any other your requirements)  
> but instead of wrapping methods one could easily #perform: a  
> selector on the receiver. What would be the reason that you depend  
> on #valueWithReceiver:arguments: ? it cannot be performance since  
> #perform: needs some time as well.
>
> /Klaus

The goal of my wrappers is to choose (depending on the context)  
between the original method and an instrumented one.

The calling code is similar to this :

receiver
	withArgs: args
	executeMethod:
		(context-condition
			ifTrue: [transformedMethod]
			ifFalse: [originalMethod] )

Note that I don't use #valueWithReceiver:, but the bug also appears  
with that method.

Since #perform: goes through the method lookup process, it will loop  
unless I use two new selectors. This solution has several  
disadvantages like implying a second lookup process or not being  
invisible (the new method dictionary entries appear in browsers and  
are editable which is problematic).


Antoine



More information about the Squeak-dev mailing list