soot.jimple.toolkits.scalar
Class CopyPropagator

java.lang.Object
  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

CopyPropagator

public CopyPropagator(Singletons.Global g)
Method Detail

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 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.