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 booleanprivate 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 voidprivate booleanbuildControlFlowGraph(Statement statement, Function<AstNode, ResolveResult> resolver) protected ControlFlowEdgecreateEdge(ControlFlowNode from, ControlFlowNode to, ControlFlowEdgeType type) protected ControlFlowNodecreateEndNode(Statement statement) protected ControlFlowNodecreateEndNode(Statement statement, boolean addNodeToList) protected ControlFlowNodecreateNode(Statement previousStatement, Statement nextStatement, ControlFlowNodeType type) protected ControlFlowNodecreateSpecialNode(Statement statement, ControlFlowNodeType type) protected ControlFlowNodecreateSpecialNode(Statement statement, ControlFlowNodeType type, boolean addNodeToList) protected ControlFlowNodecreateStartNode(Statement statement) protected Booleanprotected ResolveResultfinal booleanfinal voidsetEvaluateOnlyPrimitiveConstants(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
-