[squeak-dev] CompiledMethod>>#valueWithReceiver:arguments:

Eliot Miranda eliot.miranda at gmail.com
Mon Mar 19 14:59:40 UTC 2018


Hi Tim,

> On Mar 18, 2018, at 11:33 PM, Tim Johnson <digit at sonic.net> wrote:
> 
> Hi all,
> 
> Browsing through a 5.1+ image today, I noticed that CompiledMethod>>#valueWithReceiver:arguments: reads as follows.  Does this method indeed need to be changed?
> 
> valueWithReceiver: aReceiver arguments: anArray 
> 
>     "This should be changed after the release of Squeak 4.3 to
>         ^self class receiver: aReceiver withArguments: anArray executeMethod: self"
>     ^ aReceiver withArgs: anArray executeMethod: self
> 

If the system is to be used with exotic proxies (and it is) then yes, ish :-).  I think the VM changes are in place.  But the receiver:withArguments:executeMethod: method could be on the instance side.  So please /don't/ put it on the class side.  The class send is pointless.

  IMO it would be better to put the primitive in valueWithReceiver:arguments: itself, but presumably the authors thought it easier to avoid the stack shuffling required to remove the compiled method (something I find dubious; perform:withArguments: has to do more).  But that would require a new numbered primitive.
> 
> Thanks,
> Tim
> 
> 
> 
> 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20180319/82cc286a/attachment.html>


More information about the Squeak-dev mailing list