Class ControlFlowGraph
java.lang.Object
org.checkerframework.dataflow.cfg.ControlFlowGraph
- All Implemented Interfaces:
- org.plumelib.util.UniqueId
A control flow graph (CFG for short) of a single method.
 
The graph is represented by the successors (methods SingleSuccessorBlock.getSuccessor(),
 ConditionalBlock.getThenSuccessor(), ConditionalBlock.getElseSuccessor(), ExceptionBlock.getExceptionalSuccessors(), RegularBlock.getRegularSuccessor()) and
 predecessors (method Block.getPredecessors()) of the entry and exit blocks.
- 
Field SummaryFieldsModifier and TypeFieldDescriptionprotected final IdentityHashMap<Tree,Set<Node>> Class declarations that have been encountered when building the control-flow graph for a method.protected final List<LambdaExpressionTree>Lambdas encountered when building the control-flow graph for a method, variable initializer, or initializer.protected final SpecialBlockThe entry block of the control flow graph.protected final SpecialBlockThe exceptional exit block of the control flow graph.protected final IdentityHashMap<UnaryTree,BinaryTree> Map from postfix increment or decrement trees that are ASTUnaryTrees to the synthetic tree that isv + 1orv - 1.protected final SpecialBlockThe regular exit block of the control flow graph.protected final List<ReturnNode>All return nodes (if any) encountered.protected final IdentityHashMap<Tree,Set<Node>> final UnderlyingASTThe AST this CFG corresponds to.
- 
Constructor SummaryConstructorsConstructorDescriptionControlFlowGraph(SpecialBlock entryBlock, SpecialBlockImpl regularExitBlock, SpecialBlockImpl exceptionalExitBlock, UnderlyingAST underlyingAST, IdentityHashMap<Tree, Set<Node>> treeLookup, IdentityHashMap<Tree, Set<Node>> convertedTreeLookup, IdentityHashMap<UnaryTree, BinaryTree> postfixNodeLookup, List<ReturnNode> returnNodes, List<ClassTree> declaredClasses, List<LambdaExpressionTree> declaredLambdas) 
- 
Method SummaryModifier and TypeMethodDescriptionReturns the set of all basic blocks in this control flow graph.Returns all nodes in this control flow graph.Returns all basic blocks in this control flow graph, in reversed depth-first postorder.Returns the entry block of the control flow graph.org.plumelib.util.UnmodifiableIdentityHashMap<UnaryTree,BinaryTree> Returns an unmodifiable view of the lookup-map of the binary tree for a postfix expression.Returns an unmodifiable view of the tree-lookup map.longgetUid()Returns the AST this CFG corresponds to.toString()Returns a verbose string representation of this, useful for debugging.Methods inherited from class java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.plumelib.util.UniqueIdgetClassAndUid
- 
Field Details- 
entryBlockThe entry block of the control flow graph.
- 
regularExitBlockThe regular exit block of the control flow graph.
- 
exceptionalExitBlockThe exceptional exit block of the control flow graph.
- 
underlyingASTThe AST this CFG corresponds to.
- 
treeLookupMaps from ASTTrees to sets ofNodes.- Most Trees that produce 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 inconvertedTreeLookup.
 treeLookupandconvertedTreeLookup) do not appear ingetAllNodes()because their blocks are not reachable in the control flow graph. Dataflow will not compute abstract values for these nodes.
- 
convertedTreeLookup
- 
postfixNodeLookupMap from postfix increment or decrement trees that are ASTUnaryTrees to the synthetic tree that isv + 1orv - 1.
- 
returnNodesAll return nodes (if any) encountered. Only includes return statements that actually return something
- 
declaredClassesClass declarations that have been encountered when building the control-flow graph for a method.
- 
declaredLambdasLambdas encountered when building the control-flow graph for a method, variable initializer, or initializer.
 
- 
- 
Constructor Details- 
ControlFlowGraphpublic ControlFlowGraph(SpecialBlock entryBlock, SpecialBlockImpl regularExitBlock, SpecialBlockImpl exceptionalExitBlock, UnderlyingAST underlyingAST, IdentityHashMap<Tree, Set<Node>> treeLookup, IdentityHashMap<Tree, Set<Node>> convertedTreeLookup, IdentityHashMap<UnaryTree, BinaryTree> postfixNodeLookup, List<ReturnNode> returnNodes, List<ClassTree> declaredClasses, List<LambdaExpressionTree> declaredLambdas) 
 
- 
- 
Method Details- 
getUid- Specified by:
- getUidin interface- org.plumelib.util.UniqueId
 
- 
getNodesCorrespondingToTree
- 
getEntryBlockReturns the entry block of the control flow graph.- Returns:
- the entry block of the control flow graph
 
- 
getReturnNodes
- 
getRegularExitBlock
- 
getExceptionalExitBlock
- 
getUnderlyingASTReturns the AST this CFG corresponds to.- Returns:
- the AST this CFG corresponds to
 
- 
getAllBlockspublic Set<Block> getAllBlocks(@UnknownInitialization(ControlFlowGraph.class) ControlFlowGraph this) Returns the set of all basic blocks in this control flow graph.- Returns:
- the set of all basic blocks in this control flow graph
 
- 
getAllNodesReturns all nodes in this control flow graph.- Returns:
- all nodes in this control flow graph
 
- 
getDepthFirstOrderedBlocksReturns all basic blocks in this control flow graph, in reversed depth-first postorder. Blocks may appear more than once in the sequence.- Returns:
- the list of all basic block in this control flow graph in reversed depth-first postorder sequence
 
- 
getTreeLookupReturns an unmodifiable view of the tree-lookup map. Ignores convertedTreeLookup, thoughgetNodesCorrespondingToTree(com.sun.source.tree.Tree)uses that field.- Returns:
- the unmodifiable tree-lookup map
 
- 
getPostfixNodeLookupReturns an unmodifiable view of the lookup-map of the binary tree for a postfix expression.- Returns:
- the unmodifiable lookup-map of the binary tree for a postfix expression
 
- 
getContainingMethod
- 
getContainingClass- Parameters:
- t- a tree that might be within a class
- Returns:
- the class that contains the given tree, or null
 
- 
getDeclaredClasses
- 
getDeclaredLambdas
- 
toString
- 
toStringDebugReturns a verbose string representation of this, useful for debugging.- Returns:
- a string representation of this
 
 
-