Package soot.toolkits.graph
Toolkit to produce and manipulate various types of control flow
graphs. While the CFG classes do not impose restrictions on the types
of graph nodes, the nodes are typically instances of
Unit
or Block. The latter corresponds to basic blocks of
Units. Some of the CFG classes include the control
flow corresponding to thrown exceptions, while others
abstract away exception-related edges.
-
Interface Summary Interface Description DirectedBodyGraph<N> DirectedGraph<N> Defines the notion of a directed graph.DominanceFrontier<N> Interface to compute and/or store the dominance frontiers of nodes in a dominator tree.DominatorsFinder<N> General interface for a dominators analysis.EdgeLabelledDirectedGraph<N,L> ADirectedGraphwith labels on the edges.ExceptionalGraph<N> Defines the interface for navigating a control flow graph which distinguishes exceptional control flow.ExceptionalGraph.ExceptionDest<N> Data structure to represent the fact that a givenTrapwill catch some subset of the exceptions which may be thrown by a given graph node.MutableDirectedGraph<N> Defines a DirectedGraph which is modifiable.MutableEdgeLabelledDirectedGraph<N,L> Defines a DirectedGraph which is modifiable and associates a label object with every edge.Orderer<N> An orderer builds an order on a directed, not necessarily acyclic, graph.ReversibleGraph<N> DirectedGraph which can be reversed and re-reversed. -
Class Summary Class Description ArrayRefBlockGraph Block Represents BasicBlocks that partition a method body.BlockGraph Represents the control flow graph of aBodyat the basic block level.BlockGraphConverter This utility class can convert any BlockGraph to a single-headed and single-tailed graph by inserting appropriate Start or Stop nodes.BriefBlockGraph BriefUnitGraph Represents a CFG where the nodes are Unit instances, and where no edges are included to account for control flow associated with exceptions.ClassicCompleteBlockGraph Represents a CFG where the nodes areBlocks and the edges are derived from control flow.ClassicCompleteUnitGraph Represents a CFG for a Body instance where the nodes areUnitinstances, and where edges are a conservative indication of unexceptional and exceptional control flow.CompleteBlockGraph CompleteUnitGraph CytronDominanceFrontier<N> Class to compute the DominanceFrontier using Cytron's celebrated efficient algorithm.DominatorAnalysis Deprecated. useMHGDominatorsFinderinsteadDominatorNode<N> Represents a dominator node in DominatorTree.DominatorTree<N> Constructs a dominator tree structure from the given DominatorsFinder.DominatorTreeAdapter<N> This adapter provides a DirectedGraph interface to DominatorTree.ExceptionalBlockGraph Represents a CFG where the nodes areBlocks and the edges are derived from control flow.ExceptionalBlockGraph.ExceptionDest ExceptionalUnitGraph ExceptionalUnitGraph.ExceptionDest ExceptionalUnitGraphFactory HashMutableDirectedGraph<N> HashMap based implementation of a MutableBlockGraph.HashMutableEdgeLabelledDirectedGraph<N,L> HashMap based implementation of a MutableEdgeLabelledDirectedGraph.HashMutableEdgeLabelledDirectedGraph.DGEdge<N> HashReversibleGraph<N> A reversible version of HashMutableDirectedGraphInverseGraph<N> An inverted graph of a directed graph.LoopNestTree A loop nesting tree, implemented as a tree-map.MemoryEfficientGraph<N> A memory efficient version of HashMutableDirectedGraph, in the sense that throw-away objects passed as arguments will not be kept in the process of adding edges.MHGDominatorsFinder<N> Calculate dominators for basic blocks.MHGPostDominatorsFinder<N> Post-dominators finder for multi-headed graph.PostDominatorAnalysis Deprecated. useMHGPostDominatorsFinderinsteadPseudoTopologicalOrderer<N> Orders in pseudo-topological order, the nodes of a DirectedGraph instance.ReversePseudoTopologicalOrderer<N> Deprecated. SimpleDominatorsFinder<N> Wrapper class for a simple dominators analysis based on a simple flow analysis algorithm.SlowPseudoTopologicalOrderer<N> Provide the pseudo topological order of a graph's nodes.StronglyConnectedComponents Deprecated. implementation is inefficient; useStronglyConnectedComponentsFastinsteadStronglyConnectedComponentsFast<N> Identifies and provides an interface to query the strongly-connected components of DirectedGraph instances.TrapUnitGraph UnitGraph Represents a CFG where the nodes areUnitinstances and edges represent unexceptional and (possibly) exceptional control flow between Units.ZonedBlockGraph A CFG where the nodes areBlockinstances, and where exception boundaries are taken into account when finding the Blocks for the provided Body.