Class CopyPropagator

  extended by soot.Transformer
      extended by soot.BodyTransformer
          extended by soot.jimple.toolkits.scalar.CopyPropagator

public class CopyPropagator
extends BodyTransformer

Constructor Summary
CopyPropagator(Singletons.Global g)
Method Summary
protected  void internalTransform(Body b, String phaseName, Map opts)
          Cascaded copy propagator.
static CopyPropagator v()
Methods inherited from class soot.BodyTransformer
transform, transform, transform
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail


public CopyPropagator(Singletons.Global g)
Method Detail


public static CopyPropagator v()


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
b - the body on which to apply the transformation
phaseName - the phasename for this transform; not typically used by implementations.
opts - the actual computed options; a combination of default options and Scene specified options.