Class DefiniteAssignmentAnalysis
- java.lang.Object
-
- com.strobel.decompiler.languages.java.ast.DefiniteAssignmentAnalysis
-
public class DefiniteAssignmentAnalysis extends java.lang.Object
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static class
DefiniteAssignmentAnalysis.DefiniteAssignmentNode
(package private) class
DefiniteAssignmentAnalysis.DefiniteAssignmentVisitor
(package private) static class
DefiniteAssignmentAnalysis.DerivedControlFlowGraphBuilder
-
Field Summary
-
Constructor Summary
Constructors Constructor Description DefiniteAssignmentAnalysis(DecompilerContext context, Statement rootStatement)
DefiniteAssignmentAnalysis(Statement rootStatement, Function<AstNode,ResolveResult> resolver)
-
Method Summary
-
-
-
Field Detail
-
visitor
private final DefiniteAssignmentAnalysis.DefiniteAssignmentVisitor visitor
-
allNodes
private final java.util.ArrayList<DefiniteAssignmentAnalysis.DefiniteAssignmentNode> allNodes
-
beginNodeMap
private final java.util.LinkedHashMap<Statement,DefiniteAssignmentAnalysis.DefiniteAssignmentNode> beginNodeMap
-
endNodeMap
private final java.util.LinkedHashMap<Statement,DefiniteAssignmentAnalysis.DefiniteAssignmentNode> endNodeMap
-
conditionNodeMap
private final java.util.LinkedHashMap<Statement,DefiniteAssignmentAnalysis.DefiniteAssignmentNode> conditionNodeMap
-
edgeStatus
private final java.util.LinkedHashMap<ControlFlowEdge,DefiniteAssignmentStatus> edgeStatus
-
unassignedVariableUses
private final java.util.ArrayList<IdentifierExpression> unassignedVariableUses
-
unassignedVariableUsesView
private final java.util.List<IdentifierExpression> unassignedVariableUsesView
-
nodesWithModifiedInput
private final java.util.ArrayDeque<DefiniteAssignmentAnalysis.DefiniteAssignmentNode> nodesWithModifiedInput
-
resolver
private final Function<AstNode,ResolveResult> resolver
-
variableName
private java.lang.String variableName
-
analyzedRangeStart
private int analyzedRangeStart
-
analyzedRangeEnd
private int analyzedRangeEnd
-
-
Constructor Detail
-
DefiniteAssignmentAnalysis
public DefiniteAssignmentAnalysis(DecompilerContext context, Statement rootStatement)
-
DefiniteAssignmentAnalysis
public DefiniteAssignmentAnalysis(Statement rootStatement, Function<AstNode,ResolveResult> resolver)
-
-
Method Detail
-
insertAnonymousMethods
private void insertAnonymousMethods(int insertPosition, AstNode node, ControlFlowGraphBuilder builder)
-
getUnassignedVariableUses
public java.util.List<IdentifierExpression> getUnassignedVariableUses()
-
setAnalyzedRange
public void setAnalyzedRange(Statement start, Statement end, boolean startInclusive, boolean endInclusive)
-
analyze
public void analyze(java.lang.String variable)
-
analyze
public void analyze(java.lang.String variable, DefiniteAssignmentStatus initialStatus)
-
isPotentiallyAssigned
public boolean isPotentiallyAssigned()
-
getStatusBefore
public DefiniteAssignmentStatus getStatusBefore(Statement statement)
-
getStatusAfter
public DefiniteAssignmentStatus getStatusAfter(Statement statement)
-
getBeforeLoopCondition
public DefiniteAssignmentStatus getBeforeLoopCondition(Statement statement)
-
cleanSpecialValues
private DefiniteAssignmentStatus cleanSpecialValues(DefiniteAssignmentStatus status)
-
mergeStatus
private DefiniteAssignmentStatus mergeStatus(DefiniteAssignmentStatus a, DefiniteAssignmentStatus b)
-
changeNodeStatus
private void changeNodeStatus(DefiniteAssignmentAnalysis.DefiniteAssignmentNode node, DefiniteAssignmentStatus inputStatus)
-
changeEdgeStatus
private void changeEdgeStatus(ControlFlowEdge edge, DefiniteAssignmentStatus newStatus)
-
evaluateConstant
protected ResolveResult evaluateConstant(Expression e)
-
evaluateCondition
protected java.lang.Boolean evaluateCondition(Expression e)
-
-