Class ControlFlowGraphBuilder
- java.lang.Object
-
- com.strobel.decompiler.languages.java.analysis.ControlFlowGraphBuilder
-
- Direct Known Subclasses:
DefiniteAssignmentAnalysis.DerivedControlFlowGraphBuilder
public class ControlFlowGraphBuilder extends java.lang.Object
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) class
ControlFlowGraphBuilder.NodeCreationVisitor
-
Field Summary
Fields Modifier and Type Field Description private boolean
_evaluateOnlyPrimitiveConstants
private java.util.ArrayList<ControlFlowNode>
gotoStatements
private java.util.HashMap<java.lang.String,ControlFlowNode>
labels
private java.util.ArrayList<ControlFlowNode>
nodes
private Function<AstNode,ResolveResult>
resolver
private Statement
rootStatement
-
Constructor Summary
Constructors Constructor Description ControlFlowGraphBuilder()
-
Method Summary
-
-
-
Field Detail
-
rootStatement
private Statement rootStatement
-
resolver
private Function<AstNode,ResolveResult> resolver
-
nodes
private java.util.ArrayList<ControlFlowNode> nodes
-
labels
private java.util.HashMap<java.lang.String,ControlFlowNode> labels
-
gotoStatements
private java.util.ArrayList<ControlFlowNode> gotoStatements
-
_evaluateOnlyPrimitiveConstants
private boolean _evaluateOnlyPrimitiveConstants
-
-
Method Detail
-
createNode
protected ControlFlowNode createNode(Statement previousStatement, Statement nextStatement, ControlFlowNodeType type)
-
createStartNode
protected ControlFlowNode createStartNode(Statement statement)
-
createSpecialNode
protected ControlFlowNode createSpecialNode(Statement statement, ControlFlowNodeType type)
-
createSpecialNode
protected ControlFlowNode createSpecialNode(Statement statement, ControlFlowNodeType type, boolean addNodeToList)
-
createEndNode
protected ControlFlowNode createEndNode(Statement statement)
-
createEndNode
protected ControlFlowNode createEndNode(Statement statement, boolean addNodeToList)
-
createEdge
protected ControlFlowEdge createEdge(ControlFlowNode from, ControlFlowNode to, ControlFlowEdgeType type)
-
buildControlFlowGraph
public java.util.List<ControlFlowNode> buildControlFlowGraph(Statement statement, Function<AstNode,ResolveResult> resolver)
-
annotateLeaveEdgesWithTryFinallyBlocks
final void annotateLeaveEdgesWithTryFinallyBlocks()
-
isEvaluateOnlyPrimitiveConstants
public final boolean isEvaluateOnlyPrimitiveConstants()
-
setEvaluateOnlyPrimitiveConstants
public final void setEvaluateOnlyPrimitiveConstants(boolean evaluateOnlyPrimitiveConstants)
-
evaluateConstant
protected ResolveResult evaluateConstant(Expression e)
-
areEqualConstants
private boolean areEqualConstants(ResolveResult c1, ResolveResult c2)
-
evaluateCondition
protected java.lang.Boolean evaluateCondition(Expression e)
-
-