public class BusyCodeMotion
extends BodyTransformer
Performs a partial redundancy elimination (= code motion). This is done, by
moving everycomputation as high as possible (it is easy to show, that
they are computationally optimal), and then replacing the original
computation by a reference to this new high computation. This implies, that
we introduce many new helper-variables (that can easily be eliminated
afterwards).
In order to catch every redundant expression, this transformation must be
done on a graph without critical edges. Therefore the first thing we do, is
removing them. A subsequent pass can then easily remove the synthetic nodes
we have introduced.
The term "busy" refers to the fact, that we always move computations
as high as possible. Even, if this is not necessary.
- See Also:
CriticalEdgeRemover