Class DefiniteAssignmentAnalysis
java.lang.Object
com.strobel.decompiler.languages.java.ast.DefiniteAssignmentAnalysis
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescription(package private) static final class(package private) final class(package private) static final class -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final ArrayList<DefiniteAssignmentAnalysis.DefiniteAssignmentNode> private intprivate intprivate final LinkedHashMap<Statement, DefiniteAssignmentAnalysis.DefiniteAssignmentNode> private final LinkedHashMap<Statement, DefiniteAssignmentAnalysis.DefiniteAssignmentNode> private final LinkedHashMap<ControlFlowEdge, DefiniteAssignmentStatus> private final LinkedHashMap<Statement, DefiniteAssignmentAnalysis.DefiniteAssignmentNode> private final ArrayDeque<DefiniteAssignmentAnalysis.DefiniteAssignmentNode> private final Function<AstNode, ResolveResult> private final ArrayList<IdentifierExpression> private final List<IdentifierExpression> private Stringprivate final DefiniteAssignmentAnalysis.DefiniteAssignmentVisitor -
Constructor Summary
ConstructorsConstructorDescriptionDefiniteAssignmentAnalysis(DecompilerContext context, Statement rootStatement) DefiniteAssignmentAnalysis(Statement rootStatement, Function<AstNode, ResolveResult> resolver) -
Method Summary
Modifier and TypeMethodDescriptionvoidvoidanalyze(String variable, DefiniteAssignmentStatus initialStatus) private voidchangeEdgeStatus(ControlFlowEdge edge, DefiniteAssignmentStatus newStatus) private voidchangeNodeStatus(DefiniteAssignmentAnalysis.DefiniteAssignmentNode node, DefiniteAssignmentStatus inputStatus) private DefiniteAssignmentStatusprotected Booleanprotected ResolveResultgetBeforeLoopCondition(Statement statement) getStatusAfter(Statement statement) getStatusBefore(Statement statement) private voidinsertAnonymousMethods(int insertPosition, AstNode node, ControlFlowGraphBuilder builder) booleanprivate DefiniteAssignmentStatusvoidsetAnalyzedRange(Statement start, Statement end) voidsetAnalyzedRange(Statement start, Statement end, boolean startInclusive, boolean endInclusive)
-
Field Details
-
visitor
-
allNodes
-
beginNodeMap
private final LinkedHashMap<Statement, DefiniteAssignmentAnalysis.DefiniteAssignmentNode> beginNodeMap -
endNodeMap
private final LinkedHashMap<Statement, DefiniteAssignmentAnalysis.DefiniteAssignmentNode> endNodeMap -
conditionNodeMap
private final LinkedHashMap<Statement, DefiniteAssignmentAnalysis.DefiniteAssignmentNode> conditionNodeMap -
edgeStatus
-
unassignedVariableUses
-
unassignedVariableUsesView
-
nodesWithModifiedInput
-
resolver
-
variableName
-
analyzedRangeStart
private int analyzedRangeStart -
analyzedRangeEnd
private int analyzedRangeEnd
-
-
Constructor Details
-
DefiniteAssignmentAnalysis
-
DefiniteAssignmentAnalysis
public DefiniteAssignmentAnalysis(Statement rootStatement, Function<AstNode, ResolveResult> resolver)
-
-
Method Details
-
insertAnonymousMethods
private void insertAnonymousMethods(int insertPosition, AstNode node, ControlFlowGraphBuilder builder) -
getUnassignedVariableUses
-
setAnalyzedRange
-
setAnalyzedRange
-
analyze
-
analyze
-
isPotentiallyAssigned
public boolean isPotentiallyAssigned() -
getStatusBefore
-
getStatusAfter
-
getBeforeLoopCondition
-
cleanSpecialValues
-
mergeStatus
private DefiniteAssignmentStatus mergeStatus(DefiniteAssignmentStatus a, DefiniteAssignmentStatus b) -
changeNodeStatus
private void changeNodeStatus(DefiniteAssignmentAnalysis.DefiniteAssignmentNode node, DefiniteAssignmentStatus inputStatus) -
changeEdgeStatus
-
evaluateConstant
-
evaluateCondition
-