@Override public final ControlFlowNode next() { if (_innerIterator == null) { _innerIterator = _outgoing.listIterator(); } return _innerIterator.next().getTarget(); }
public final boolean precedes(final ControlFlowNode other) { if (other == null) { return false; } for (int i = 0; i < _outgoing.size(); i++) { if (_outgoing.get(i).getTarget() == other) { return true; } } return false; }
public final boolean precedes(final ControlFlowNode other) { if (other == null) { return false; } for (int i = 0; i < _outgoing.size(); i++) { if (_outgoing.get(i).getTarget() == other) { return true; } } return false; }
public final boolean precedes(final ControlFlowNode other) { if (other == null) { return false; } for (int i = 0; i < _outgoing.size(); i++) { if (_outgoing.get(i).getTarget() == other) { return true; } } return false; }
@Override public final ControlFlowNode next() { if (_innerIterator == null) { _innerIterator = _outgoing.listIterator(); } return _innerIterator.next().getTarget(); }
@Override public final ControlFlowNode next() { if (_innerIterator == null) { _innerIterator = _outgoing.listIterator(); } return _innerIterator.next().getTarget(); }
private void reconstructEdges(final ControlFlowNode oldNode, final ControlFlowNode newNode) { for (final ControlFlowEdge oldEdge : oldNode.getOutgoing()) { createEdge(newNode, getNew(oldEdge.getTarget()), oldEdge.getType()); } }
private void reconstructEdges(final ControlFlowNode oldNode, final ControlFlowNode newNode) { for (final ControlFlowEdge oldEdge : oldNode.getOutgoing()) { createEdge(newNode, getNew(oldEdge.getTarget()), oldEdge.getType()); } }
private void reconstructEdges(final ControlFlowNode oldNode, final ControlFlowNode newNode) { for (final ControlFlowEdge oldEdge : oldNode.getOutgoing()) { createEdge(newNode, getNew(oldEdge.getTarget()), oldEdge.getType()); } }
private ControlFlowEdge createEdge(final ControlFlowNode fromNode, final ControlFlowNode toNode, final JumpType type) { final ControlFlowEdge edge = new ControlFlowEdge(fromNode, toNode, type); for (final ControlFlowEdge existingEdge : fromNode.getOutgoing()) { if (existingEdge.getSource() == fromNode && existingEdge.getTarget() == toNode && existingEdge.getType() == type) { return existingEdge; } } fromNode.getOutgoing().add(edge); toNode.getIncoming().add(edge); return edge; }
private ControlFlowEdge createEdge(final ControlFlowNode fromNode, final ControlFlowNode toNode, final JumpType type) { final ControlFlowEdge edge = new ControlFlowEdge(fromNode, toNode, type); for (final ControlFlowEdge existingEdge : fromNode.getOutgoing()) { if (existingEdge.getSource() == fromNode && existingEdge.getTarget() == toNode && existingEdge.getType() == type) { return existingEdge; } } fromNode.getOutgoing().add(edge); toNode.getIncoming().add(edge); return edge; }
private ControlFlowEdge createEdge(final ControlFlowNode fromNode, final ControlFlowNode toNode, final JumpType type) { final ControlFlowEdge edge = new ControlFlowEdge(fromNode, toNode, type); for (final ControlFlowEdge existingEdge : fromNode.getOutgoing()) { if (existingEdge.getSource() == fromNode && existingEdge.getTarget() == toNode && existingEdge.getType() == type) { return existingEdge; } } fromNode.getOutgoing().add(edge); toNode.getIncoming().add(edge); return edge; }
private void copyFinallyBlocksIntoLeaveEdges() { // // Step 5b: Copy finally blocks into the LeaveTry edges. // for (int n = _nodes.size(), i = n - 1; i >= 0; i--) { final ControlFlowNode node = _nodes.get(i); final Instruction end = node.getEnd(); if (end != null && node.getOutgoing().size() == 1 && node.getOutgoing().get(0).getType() == JumpType.LeaveTry) { assert end.getOpCode() == OpCode.GOTO || end.getOpCode() == OpCode.GOTO_W; final ControlFlowEdge edge = node.getOutgoing().get(0); final ControlFlowNode target = edge.getTarget(); target.getIncoming().remove(edge); node.getOutgoing().clear(); final ControlFlowNode handler = findInnermostExceptionHandlerNode(end.getEndOffset()); assert handler.getNodeType() == ControlFlowNodeType.FinallyHandler; final ControlFlowNode copy = copyFinallySubGraph(handler, handler.getEndFinallyNode(), target); createEdge(node, copy, JumpType.Normal); } } }
private void copyFinallyBlocksIntoLeaveEdges() { // // Step 5b: Copy finally blocks into the LeaveTry edges. // for (int n = _nodes.size(), i = n - 1; i >= 0; i--) { final ControlFlowNode node = _nodes.get(i); final Instruction end = node.getEnd(); if (end != null && node.getOutgoing().size() == 1 && node.getOutgoing().get(0).getType() == JumpType.LeaveTry) { assert end.getOpCode() == OpCode.GOTO || end.getOpCode() == OpCode.GOTO_W; final ControlFlowEdge edge = node.getOutgoing().get(0); final ControlFlowNode target = edge.getTarget(); target.getIncoming().remove(edge); node.getOutgoing().clear(); final ControlFlowNode handler = findInnermostExceptionHandlerNode(end.getEndOffset()); assert handler.getNodeType() == ControlFlowNodeType.FinallyHandler; final ControlFlowNode copy = copyFinallySubGraph(handler, handler.getEndFinallyNode(), target); createEdge(node, copy, JumpType.Normal); } } }
private void copyFinallyBlocksIntoLeaveEdges() { // // Step 5b: Copy finally blocks into the LeaveTry edges. // for (int n = _nodes.size(), i = n - 1; i >= 0; i--) { final ControlFlowNode node = _nodes.get(i); final Instruction end = node.getEnd(); if (end != null && node.getOutgoing().size() == 1 && node.getOutgoing().get(0).getType() == JumpType.LeaveTry) { assert end.getOpCode() == OpCode.GOTO || end.getOpCode() == OpCode.GOTO_W; final ControlFlowEdge edge = node.getOutgoing().get(0); final ControlFlowNode target = edge.getTarget(); target.getIncoming().remove(edge); node.getOutgoing().clear(); final ControlFlowNode handler = findInnermostExceptionHandlerNode(end.getEndOffset()); assert handler.getNodeType() == ControlFlowNodeType.FinallyHandler; final ControlFlowNode copy = copyFinallySubGraph(handler, handler.getEndFinallyNode(), target); createEdge(node, copy, JumpType.Normal); } } }
final ControlFlowNode to = edge.getTarget();
final ControlFlowNode to = edge.getTarget();
final ControlFlowNode target = edge.getTarget();
final ControlFlowNode target = edge.getTarget();
final ControlFlowNode target = edge.getTarget();