The LL compiler sometimes produces code which by local inspection can be considerably improved. For these cases, a peep-hole optimizer is used which looks at the code and changes it to make it smaller and faster.
The most obvious inefficient constellations are those where something
is first pushed on the stack and then directly discarded.
The instructions responsible for this can simply be removed:
Another simplification is to collect remove instructions:
With this rule, a sequence of remove instructions is replaced by a single instruction. This situation occurs when multiple let forms end at a single location.
In the LLAMA, some instructions were introduced especially for
the peep-hole optimizer: set-nth- and set-global-.
Their counterparts without a trailing dash leave the top stack
element on the stack, the versions with the dash remove it.
An instruction sequence consisting of set-nth or set-global
and a pop instruction (as it is produced by multiple
setq statements) is replaced by the corresponding
set-nth- or set-global- instruction:
Many additional peep-hole optimizations are possible, most of them also
requiring new LLAMA instructions, e.g. cons* (executing
cons
times):