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.
Methods inherited from class java.lang.Object |
clone,
equals,
finalize,
getClass,
hashCode,
notify,
notifyAll,
toString,
wait,
wait,
wait |
CriticalEdgeRemover
public CriticalEdgeRemover(Singletons.Global g)
v
public static CriticalEdgeRemover v()
internalTransform
protected void internalTransform(Body b,
java.lang.String phaseName,
java.util.Map options)
- performs critical edge-removing.
- Overrides:
- internalTransform in class BodyTransformer
- Tags copied from class: BodyTransformer
- 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.