[squeak-dev] Avoiding compiler inlining

Igor Stasenko siguctua at gmail.com
Tue Jan 13 09:22:19 UTC 2009


2009/1/12 nicolas cellier <ncellier at ifrance.com>:
>
> Following cascading of macros, I need turning some inline off. A recurrent
> topic in Squeak-dev.
>
> Well, once i thought about using a Compiler reflective annotation (i.e. a
> pragma) in order to turn optimization off.
>
> Stupid me.
> Inlined messages are made of block receiver/arguments.
> So one would simply turn inlining off by sending a yourself message to a
> block.
>
>
>        [false] yourself whileTrue.
>
>        false ifTrue: [self inspect] yourself.
>
> Of course, yourself is not a very explicit message...
> We could create another #turnOffInlining or something...
>
> Except that in Squeak as other Smalltalks, the Old Compiler is quite
> pedantic about optimizing these messages.
>
> [false] yourself  <- receiver of whileTrue must be a block or variable
> ->whileTrue.
>
> false ifTrue: [self inspect]  <- argument of ifTrue: must be a block or
> variable ->yourself.
>
>
> Common! You don't like the system? Change It!
> This is just 1 method attached.

Heh.. you seem stumbled upon same things as i was :)

well, if you writing own code so you have a total control whether you
want inlining or not, you can simply write:
[ ... ] perform: #whileTrue

(x=y) perform: #ifTrue: with: [ ... ]

:)

but if you don't want inlining at all in a system (like me) - the only
way is to change the compiler.

>
> Ah, and the ifNil test is just a trick for the cascades, remember?
>
> Isn't life easier with Smalltalk compared to a static world?
>
> Nicolas
>


-- 
Best regards,
Igor Stasenko AKA sig.



More information about the Squeak-dev mailing list