Next: The Maybe-Inline Declaration, Previous: Inline Expansion Recording, Up: Inline Expansion [Contents][Index]
Python supports semi-inline functions. Semi-inline expansion
shares a single copy of a function across all the calls in a component
by converting the inline expansion into a local function
(see local-call.) This takes up less space when there are
multiple calls, but also provides less opportunity for context
dependent optimization. When there is only one call, the result is
identical to normal inline expansion. Semi-inline expansion is done
when the space
optimization quality is 0
, and the
function has been declared extensions:maybe-inline
.
This mechanism of inline expansion combined with local call also
allows recursive functions to be inline expanded. If a recursive
function is declared inline
, calls will actually be compiled
semi-inline. Although recursive functions are often so complex that
there is little advantage to semi-inline expansion, it can still be
useful in the same sort of cases where normal inline expansion is
especially advantageous, i.e. functions where the calling context can
help a lot.
Next: The Maybe-Inline Declaration, Previous: Inline Expansion Recording, Up: Inline Expansion [Contents][Index]