[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
|