public class ControlFlowGraph extends Object
Modifier and Type | Field and Description |
---|---|
protected IdentityHashMap<Tree,Set<Node>> |
convertedTreeLookup
|
protected SpecialBlock |
entryBlock
The entry block of the control flow graph.
|
protected SpecialBlock |
exceptionalExitBlock
The exceptional exit block of the control flow graph.
|
protected SpecialBlock |
regularExitBlock
The regular exit block of the control flow graph.
|
protected List<ReturnNode> |
returnNodes
All return nodes (if any) encountered.
|
protected IdentityHashMap<Tree,Set<Node>> |
treeLookup
|
protected IdentityHashMap<UnaryTree,AssignmentNode> |
unaryAssignNodeLookup
Map from AST
UnaryTree s to corresponding AssignmentNode s. |
protected UnderlyingAST |
underlyingAST
The AST this CFG corresponds to.
|
Constructor and Description |
---|
ControlFlowGraph(SpecialBlock entryBlock,
SpecialBlockImpl regularExitBlock,
SpecialBlockImpl exceptionalExitBlock,
UnderlyingAST underlyingAST,
IdentityHashMap<Tree,Set<Node>> treeLookup,
IdentityHashMap<Tree,Set<Node>> convertedTreeLookup,
IdentityHashMap<UnaryTree,AssignmentNode> unaryAssignNodeLookup,
List<ReturnNode> returnNodes) |
Modifier and Type | Method and Description |
---|---|
Set<Block> |
getAllBlocks() |
@Nullable ClassTree |
getContainingClass(Tree t)
|
@Nullable MethodTree |
getContainingMethod(Tree t)
|
List<Block> |
getDepthFirstOrderedBlocks() |
SpecialBlock |
getEntryBlock() |
SpecialBlock |
getExceptionalExitBlock() |
Set<Node> |
getNodesCorrespondingToTree(Tree t) |
SpecialBlock |
getRegularExitBlock() |
List<ReturnNode> |
getReturnNodes() |
IdentityHashMap<Tree,Set<Node>> |
getTreeLookup() |
IdentityHashMap<UnaryTree,AssignmentNode> |
getUnaryAssignNodeLookup() |
UnderlyingAST |
getUnderlyingAST() |
protected final SpecialBlock entryBlock
protected final SpecialBlock regularExitBlock
protected final SpecialBlock exceptionalExitBlock
protected UnderlyingAST underlyingAST
protected IdentityHashMap<Tree,Set<Node>> treeLookup
Tree
s to sets of Node
s. Every Tree that produces a value will
have at least one corresponding Node. Trees that undergo conversions, such as boxing or
unboxing, can map to two distinct Nodes. The Node for the pre-conversion value is stored in
treeLookup, while the Node for the post-conversion value is stored in convertedTreeLookup.protected IdentityHashMap<Tree,Set<Node>> convertedTreeLookup
protected IdentityHashMap<UnaryTree,AssignmentNode> unaryAssignNodeLookup
UnaryTree
s to corresponding AssignmentNode
s.protected final List<ReturnNode> returnNodes
public ControlFlowGraph(SpecialBlock entryBlock, SpecialBlockImpl regularExitBlock, SpecialBlockImpl exceptionalExitBlock, UnderlyingAST underlyingAST, IdentityHashMap<Tree,Set<Node>> treeLookup, IdentityHashMap<Tree,Set<Node>> convertedTreeLookup, IdentityHashMap<UnaryTree,AssignmentNode> unaryAssignNodeLookup, List<ReturnNode> returnNodes)
public SpecialBlock getEntryBlock()
public List<ReturnNode> getReturnNodes()
public SpecialBlock getRegularExitBlock()
public SpecialBlock getExceptionalExitBlock()
public UnderlyingAST getUnderlyingAST()
public Set<Block> getAllBlocks()
public List<Block> getDepthFirstOrderedBlocks()
Blocks may appear more than once in the sequence.
public IdentityHashMap<Tree,Set<Node>> getTreeLookup()
public IdentityHashMap<UnaryTree,AssignmentNode> getUnaryAssignNodeLookup()
public @Nullable MethodTree getContainingMethod(Tree t)