soot.jimple.toolkits.scalar
Class CopyPropagator
java.lang.Object
soot.Transformer
soot.BodyTransformer
soot.jimple.toolkits.scalar.CopyPropagator
public class CopyPropagator
- extends BodyTransformer
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
CopyPropagator
public CopyPropagator(Singletons.Global g)
v
public static CopyPropagator v()
internalTransform
protected void internalTransform(Body b,
String phaseName,
Map opts)
- Cascaded copy propagator.
If it encounters situations of the form: A: a = ...; B: ... x = a; C:... use (x);
where a has only one definition, and x has only one definition (B), then it can
propagate immediately without checking between B and C for redefinitions
of a (namely) A because they cannot occur. In this case the propagator is global.
Otherwise, if a has multiple definitions then it only checks for redefinitions of
Propagates constants and copies in extended basic blocks.
Does not propagate stack locals when the "only-regular-locals" option is true.
- Specified by:
internalTransform
in class BodyTransformer
- Parameters:
b
- the body on which to apply the transformationphaseName
- the phasename for this transform; not typically used by implementations.opts
- the actual computed options; a combination of default options and Scene specified options.