Package soot.toolkits.scalar
Class FlowSensitiveConstantPropagator
- java.lang.Object
-
- soot.Transformer
-
- soot.BodyTransformer
-
- soot.toolkits.scalar.FlowSensitiveConstantPropagator
-
public class FlowSensitiveConstantPropagator extends BodyTransformer
A constant propagator which can cope with cases likea = 2; b = a; a = b;as well asif (x) { a = 2; } else { a = 2; } b = a;- Author:
- Marc Miltenberger
- See Also:
BodyTransformer,LocalPacker,Body
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected classFlowSensitiveConstantPropagator.BetterConstantPropagatorprotected static classFlowSensitiveConstantPropagator.ConstantState
-
Field Summary
Fields Modifier and Type Field Description protected booleanomitExceptingUnitEdgesprotected ThrowAnalysisthrowAnalysis
-
Constructor Summary
Constructors Constructor Description FlowSensitiveConstantPropagator(Singletons.Global g)FlowSensitiveConstantPropagator(ThrowAnalysis ta)FlowSensitiveConstantPropagator(ThrowAnalysis ta, boolean omitExceptingUnitEdges)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected FlowSensitiveConstantPropagator.BetterConstantPropagatorcreateBetterConstantPropagator(ExceptionalUnitGraph graph)protected voidinternalTransform(Body body, String phaseName, Map<String,String> options)This method is called to perform the transformation itself.static FlowSensitiveConstantPropagatorv()-
Methods inherited from class soot.BodyTransformer
transform, transform, transform
-
-
-
-
Field Detail
-
throwAnalysis
protected ThrowAnalysis throwAnalysis
-
omitExceptingUnitEdges
protected boolean omitExceptingUnitEdges
-
-
Constructor Detail
-
FlowSensitiveConstantPropagator
public FlowSensitiveConstantPropagator(Singletons.Global g)
-
FlowSensitiveConstantPropagator
public FlowSensitiveConstantPropagator(ThrowAnalysis ta)
-
FlowSensitiveConstantPropagator
public FlowSensitiveConstantPropagator(ThrowAnalysis ta, boolean omitExceptingUnitEdges)
-
-
Method Detail
-
v
public static FlowSensitiveConstantPropagator v()
-
internalTransform
protected void internalTransform(Body body, String phaseName, Map<String,String> options)
Description copied from class:BodyTransformerThis method is called to perform the transformation itself. It is declared abstract; subclasses must implement this method by making it the entry point to their actual Body transformation.- Specified by:
internalTransformin classBodyTransformer- Parameters:
body- the body on which to apply the transformationphaseName- the phasename for this transform; not typically used by implementations.options- the actual computed options; a combination of default options and Scene specified options.
-
createBetterConstantPropagator
protected FlowSensitiveConstantPropagator.BetterConstantPropagator createBetterConstantPropagator(ExceptionalUnitGraph graph)
-
-