public void analyze(final String variable, final DefiniteAssignmentStatus initialStatus) { this.variableName = variable; try { unassignedVariableUses.clear(); for (final DefiniteAssignmentNode node : allNodes) { node.setNodeStatus(DefiniteAssignmentStatus.CODE_UNREACHABLE); for (final ControlFlowEdge edge : node.getOutgoing()) { edgeStatus.put(edge, DefiniteAssignmentStatus.CODE_UNREACHABLE); } } changeNodeStatus(allNodes.get(analyzedRangeStart), initialStatus); while (!nodesWithModifiedInput.isEmpty()) { final DefiniteAssignmentNode node = nodesWithModifiedInput.poll(); DefiniteAssignmentStatus inputStatus = DefiniteAssignmentStatus.CODE_UNREACHABLE; for (final ControlFlowEdge edge : node.getIncoming()) { inputStatus = mergeStatus(inputStatus, edgeStatus.get(edge)); } changeNodeStatus(node, inputStatus); } } finally { this.variableName = null; } }
public void analyze(final String variable, final DefiniteAssignmentStatus initialStatus) { this.variableName = variable; try { unassignedVariableUses.clear(); for (final DefiniteAssignmentNode node : allNodes) { node.setNodeStatus(DefiniteAssignmentStatus.CODE_UNREACHABLE); for (final ControlFlowEdge edge : node.getOutgoing()) { edgeStatus.put(edge, DefiniteAssignmentStatus.CODE_UNREACHABLE); } } changeNodeStatus(allNodes.get(analyzedRangeStart), initialStatus); while (!nodesWithModifiedInput.isEmpty()) { final DefiniteAssignmentNode node = nodesWithModifiedInput.poll(); DefiniteAssignmentStatus inputStatus = DefiniteAssignmentStatus.CODE_UNREACHABLE; for (final ControlFlowEdge edge : node.getIncoming()) { inputStatus = mergeStatus(inputStatus, edgeStatus.get(edge)); } changeNodeStatus(node, inputStatus); } } finally { this.variableName = null; } }
public void analyze(final String variable, final DefiniteAssignmentStatus initialStatus) { this.variableName = variable; try { unassignedVariableUses.clear(); for (final DefiniteAssignmentNode node : allNodes) { node.setNodeStatus(DefiniteAssignmentStatus.CODE_UNREACHABLE); for (final ControlFlowEdge edge : node.getOutgoing()) { edgeStatus.put(edge, DefiniteAssignmentStatus.CODE_UNREACHABLE); } } changeNodeStatus(allNodes.get(analyzedRangeStart), initialStatus); while (!nodesWithModifiedInput.isEmpty()) { final DefiniteAssignmentNode node = nodesWithModifiedInput.poll(); DefiniteAssignmentStatus inputStatus = DefiniteAssignmentStatus.CODE_UNREACHABLE; for (final ControlFlowEdge edge : node.getIncoming()) { inputStatus = mergeStatus(inputStatus, edgeStatus.get(edge)); } changeNodeStatus(node, inputStatus); } } finally { this.variableName = null; } }
node.setNodeStatus(inputStatus);
node.setNodeStatus(inputStatus);