Package soot.jimple.toolkits.scalar
Class CopyPropagator
- java.lang.Object
-
- soot.Transformer
-
- soot.BodyTransformer
-
- soot.jimple.toolkits.scalar.CopyPropagator
-
public class CopyPropagator extends BodyTransformer
-
-
Field Summary
Fields Modifier and Type Field Description protected booleanforceOmitExceptingUnitEdgesprotected ThrowAnalysisthrowAnalysis
-
Constructor Summary
Constructors Constructor Description CopyPropagator(Singletons.Global g)CopyPropagator(ThrowAnalysis ta)CopyPropagator(ThrowAnalysis ta, boolean forceOmitExceptingUnitEdges)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static voidcopyLineTags(ValueBox useBox, DefinitionStmt def)protected voidinternalTransform(Body b, String phaseName, Map<String,String> opts)Cascaded copy propagator.static CopyPropagatorv()-
Methods inherited from class soot.BodyTransformer
transform, transform, transform
-
-
-
-
Field Detail
-
throwAnalysis
protected ThrowAnalysis throwAnalysis
-
forceOmitExceptingUnitEdges
protected boolean forceOmitExceptingUnitEdges
-
-
Constructor Detail
-
CopyPropagator
public CopyPropagator(Singletons.Global g)
-
CopyPropagator
public CopyPropagator(ThrowAnalysis ta)
-
CopyPropagator
public CopyPropagator(ThrowAnalysis ta, boolean forceOmitExceptingUnitEdges)
-
-
Method Detail
-
v
public static CopyPropagator v()
-
internalTransform
protected void internalTransform(Body b, String phaseName, Map<String,String> 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:
internalTransformin classBodyTransformer- 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.
-
copyLineTags
public static void copyLineTags(ValueBox useBox, DefinitionStmt def)
-
-