Class ControlFlowGraphBuilder
java.lang.Object
com.strobel.decompiler.languages.java.analysis.ControlFlowGraphBuilder
- Direct Known Subclasses:
DefiniteAssignmentAnalysis.DerivedControlFlowGraphBuilder
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescription(package private) final class
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate boolean
private ArrayList
<ControlFlowNode> private HashMap
<String, ControlFlowNode> private ArrayList
<ControlFlowNode> private Function
<AstNode, ResolveResult> private Statement
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription(package private) final void
private boolean
buildControlFlowGraph
(Statement statement, Function<AstNode, ResolveResult> resolver) protected ControlFlowEdge
createEdge
(ControlFlowNode from, ControlFlowNode to, ControlFlowEdgeType type) protected ControlFlowNode
createEndNode
(Statement statement) protected ControlFlowNode
createEndNode
(Statement statement, boolean addNodeToList) protected ControlFlowNode
createNode
(Statement previousStatement, Statement nextStatement, ControlFlowNodeType type) protected ControlFlowNode
createSpecialNode
(Statement statement, ControlFlowNodeType type) protected ControlFlowNode
createSpecialNode
(Statement statement, ControlFlowNodeType type, boolean addNodeToList) protected ControlFlowNode
createStartNode
(Statement statement) protected Boolean
protected ResolveResult
final boolean
final void
setEvaluateOnlyPrimitiveConstants
(boolean evaluateOnlyPrimitiveConstants)
-
Field Details
-
rootStatement
-
resolver
-
nodes
-
labels
-
gotoStatements
-
_evaluateOnlyPrimitiveConstants
private boolean _evaluateOnlyPrimitiveConstants
-
-
Constructor Details
-
ControlFlowGraphBuilder
public ControlFlowGraphBuilder()
-
-
Method Details
-
createNode
protected ControlFlowNode createNode(Statement previousStatement, Statement nextStatement, ControlFlowNodeType type) -
createStartNode
-
createSpecialNode
-
createSpecialNode
protected ControlFlowNode createSpecialNode(Statement statement, ControlFlowNodeType type, boolean addNodeToList) -
createEndNode
-
createEndNode
-
createEdge
protected ControlFlowEdge createEdge(ControlFlowNode from, ControlFlowNode to, ControlFlowEdgeType type) -
buildControlFlowGraph
public 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
-
areEqualConstants
-
evaluateCondition
-