Package soot.jimple.toolkits.graph
Class CriticalEdgeRemover
- java.lang.Object
-
- soot.Transformer
-
- soot.BodyTransformer
-
- soot.jimple.toolkits.graph.CriticalEdgeRemover
-
public class CriticalEdgeRemover extends BodyTransformer
removes all critical edges.
A critical edge is an edge from Block A to block B, if B has more than one predecessor and A has more the one successor.
As an example: If we wanted a computation to be only on the path A->B this computation must be directly on the edge. Otherwise it is either executed on the path through the second predecessor of A or throught the second successor of B.
Our critical edge-remover overcomes this problem by introducing synthetic nodes on this critical edges.
Exceptions will be ignored.
-
-
Constructor Summary
Constructors Constructor Description CriticalEdgeRemover(Singletons.Global g)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidinternalTransform(Body b, String phaseName, Map<String,String> options)performs critical edge-removing.static CriticalEdgeRemoverv()-
Methods inherited from class soot.BodyTransformer
transform, transform, transform
-
-
-
-
Constructor Detail
-
CriticalEdgeRemover
public CriticalEdgeRemover(Singletons.Global g)
-
-
Method Detail
-
v
public static CriticalEdgeRemover v()
-
internalTransform
protected void internalTransform(Body b, String phaseName, Map<String,String> options)
performs critical edge-removing.- Specified by:
internalTransformin classBodyTransformer- Parameters:
b- 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.
-
-