public final boolean succeeds(final ControlFlowNode other) { if (other == null) { return false; } for (int i = 0; i < _incoming.size(); i++) { if (_incoming.get(i).getSource() == other) { return true; } } return false; }
public final boolean succeeds(final ControlFlowNode other) { if (other == null) { return false; } for (int i = 0; i < _incoming.size(); i++) { if (_incoming.get(i).getSource() == other) { return true; } } return false; }
@Override public final ControlFlowNode next() { if (_innerIterator == null) { _innerIterator = _incoming.listIterator(); } return _innerIterator.next().getSource(); }
@Override public final ControlFlowNode next() { if (_innerIterator == null) { _innerIterator = _incoming.listIterator(); } return _innerIterator.next().getSource(); }
public final boolean succeeds(final ControlFlowNode other) { if (other == null) { return false; } for (int i = 0; i < _incoming.size(); i++) { if (_incoming.get(i).getSource() == other) { return true; } } return false; }
@Override public final ControlFlowNode next() { if (_innerIterator == null) { _innerIterator = _incoming.listIterator(); } return _innerIterator.next().getSource(); }
@Override public boolean test(final HandlerInfo o) { return o.handlerNode.getEndFinallyNode() == edge.getSource(); } }
@Override public boolean test(final HandlerInfo o) { return o.handlerNode.getEndFinallyNode() == edge.getSource(); } }
@Override public boolean test(final HandlerInfo o) { return o.handlerNode.getEndFinallyNode() == edge.getSource(); } }
private static boolean hasSingleEdgeEnteringBlock(final ControlFlowNode node) { int count = 0; for (final ControlFlowEdge edge : node.getIncoming()) { if (!node.dominates(edge.getSource())) { if (++count > 1) { return false; } } } return count == 1; }
private static boolean hasSingleEdgeEnteringBlock(final ControlFlowNode node) { int count = 0; for (final ControlFlowEdge edge : node.getIncoming()) { if (!node.dominates(edge.getSource())) { if (++count > 1) { return false; } } } return count == 1; }
private static boolean hasSingleEdgeEnteringBlock(final ControlFlowNode node) { int count = 0; for (final ControlFlowEdge edge : node.getIncoming()) { if (!node.dominates(edge.getSource())) { if (++count > 1) { return false; } } } return count == 1; }
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; }
if (edge.getSource() == successor) { continue; edge.getSource().getNodeType() == ControlFlowNodeType.Normal && !exitOnlySuccessors.contains(successor)) { toProcess.add(edge.getSource()); edge.getSource().getNodeType() == ControlFlowNodeType.Normal && (edge.getSource().getEnd().getOpCode().isThrow() || edge.getSource().getEnd().getOpCode().isReturn())) { toProcess.add(edge.getSource()); exitOnlySuccessors.add(edge.getSource()); else if (edge.getSource().getNodeType() == ControlFlowNodeType.CatchHandler) { final ControlFlowNode endCatch = findNode( cfg, edge.getSource().getExceptionHandler().getHandlerBlock().getLastInstruction() ); else if (edge.getSource().getNodeType() == ControlFlowNodeType.FinallyHandler) { successors.add(edge.getSource()); exitOnlySuccessors.add(edge.getSource()); else if (edge.getSource().getNodeType() == ControlFlowNodeType.EndFinally) { successors.add(edge.getSource());
if (edge.getSource() == successor) { continue; edge.getSource().getNodeType() == ControlFlowNodeType.Normal && !exitOnlySuccessors.contains(successor)) { toProcess.add(edge.getSource()); edge.getSource().getNodeType() == ControlFlowNodeType.Normal && (edge.getSource().getEnd().getOpCode().isThrow() || edge.getSource().getEnd().getOpCode().isReturn())) { toProcess.add(edge.getSource()); exitOnlySuccessors.add(edge.getSource()); else if (edge.getSource().getNodeType() == ControlFlowNodeType.CatchHandler) { final ControlFlowNode endCatch = findNode( cfg, edge.getSource().getExceptionHandler().getHandlerBlock().getLastInstruction() ); else if (edge.getSource().getNodeType() == ControlFlowNodeType.FinallyHandler) { successors.add(edge.getSource()); exitOnlySuccessors.add(edge.getSource()); else if (edge.getSource().getNodeType() == ControlFlowNodeType.EndFinally) { successors.add(edge.getSource());
final ControlFlowNode from = edge.getSource(); final ControlFlowNode to = edge.getTarget();
final ControlFlowNode from = edge.getSource(); final ControlFlowNode to = edge.getTarget();
final ControlFlowNode from = edge.getSource(); final ControlFlowNode to = edge.getTarget();