[squeak-dev] Avoiding compiler inlining

Eliot Miranda eliot.miranda at gmail.com
Tue Jan 13 16:17:48 UTC 2009


On Tue, Jan 13, 2009 at 2:15 AM, Martin Beck <martin.beck at hpi.uni-potsdam.de
> wrote:

> Igor Stasenko wrote:
> > 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
> >
> But keep in mind, that (at least in my Squeak 3.10 image)
> BlockContext>>whileTrue: is defined recursively:
>
> whileTrue: aBlock
>  ^ [self value] whileTrue: [aBlock value]


(Oops, too early in the morning)

this definition  works correctly:

whileTrue: aBlock
    ^self value ifTrue: [self whileTrue: aBlock]



>
>
> Thus, you still get inlined code somewhere. However, this can be changed
> to use BlockContext>>restart, I think...
>
> Regards, Martin
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20090113/ad0159cf/attachment.htm


More information about the Squeak-dev mailing list