image/svg+xml
Executedearlier
Executedlater
Compiled earlier(less specialised)
Compiled later(more specialised)
Fetchedearlier
Fetchedlater
Retiredearlier
Retiredlater
Guard?
Fetchcode
Retirecode
Fetchparent
Pass
Fail
Retirechildren
Exception?
...
Switch
...
Fetchchildren
Yes
No
Default
Retireparent
profilingcounter
The concepts in the diagram exist in memory in two forms:as compiled code, and as a data structure internal to thecompiler.The "switch" doesn't really exist as compiled code; it is theconcatenation of the fetch children's "guard"s.The "exception" test need not really exist; there can be aseparate path for the exceptional case, at the expense ofduplicating the "retire code".The significance of separating the "fetch code" from "retirecode" is that new children are inserted between them.
The structure of a specialisation
See "specialisation.txt" for more explanation.