Compiler heuristics
Igor Stasenko
siguctua at gmail.com
Tue Dec 25 03:11:00 UTC 2007
It's a theoretical question, rather than practical concerning Exupery,
but i'd like to know, what you know/thinking about special compiler
heuristics concerning simplifying expressions, when do inlining.
The problem, in basic can be demonstrated by following example.
Suppose you having a code:
mainMethod
object = 0 ifTrue: [ object method1 ] ifFalse: [ object method2]
and now method bodies:
method1
object = 0 ifTrue: [ do something] ifFalse: [ do something else ]
method2
object ~= 0 ifTrue: [ do something] ifFalse: [ do something else ]
Now, the question is, when you inlining method1/2 into mainMethod
you can see, that tests in inlined methods become redundant.
If we inline both methods, code will look like:
mainMethod
object = 0 ifTrue: [
object = 0 ifTrue: [ do something]
ifFalse: [ do something else ] ]
ifFalse: [
object ~= 0 ifTrue: [ do something]
ifFalse: [ do something else ] ]
Is there any techniques, which can help in removing such redundancy,
when analyzing code by compiler?
--
Best regards,
Igor Stasenko AKA sig.
More information about the Exupery
mailing list