[squeak-dev] Avoiding compiler inlining

nicolas cellier ncellier at ifrance.com
Tue Jan 13 00:39:50 UTC 2009


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.

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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: PreventMessageInlining-nice.1.cs
Type: text/x-csharp
Size: 1285 bytes
Desc: not available
Url : http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20090113/38ef7209/PreventMessageInlining-nice.1.bin


More information about the Squeak-dev mailing list