On 07 Jan 2014, at 03:10, Eliot Miranda <eliot.miranda@gmail.com> wrote:

I don't like all these messages with no lookup. I don't even know if this permits to earn performance now that we have inline caches.

Well, the arithmetic selectors *really* pay their way.  Try your experiment with #+ through #~= and I bet you'll see slower loops.  I think there's a compromise, which is to only inline the arithmetic selectors.  That's what we did with the VisualWorks VM, HPS.  There one can set a hidden flag in the image which directs the JIT (HPS only has a JIT) not to inline #== (VW does not inline #class), and change the flag with a primitive.  We could (and I think should) do the same.  Note that currently only #== and #class are inlined for all objects.  The arithmetic selectors #+ et al and #< et al are only inlined by the JIT for SmallInteger, and executed without lookup in the interpreter for SmallInteger x Float.
 
We removed the #class inclining in Pharo in 2.0 (so already when the old compiler is used).

Marcus