protected ControlFlowNode createNode( final Statement previousStatement, final Statement nextStatement, final ControlFlowNodeType type) { return new ControlFlowNode(previousStatement, nextStatement, type); }
final ControlFlowEdge connect(final ControlFlowNode from, final ControlFlowNode to, final ControlFlowEdgeType type) { final ControlFlowEdge edge = ControlFlowGraphBuilder.this.createEdge(from, to, type); from.getOutgoing().add(edge); to.getIncoming().add(edge); return edge; }
@Override public boolean test(final ControlFlowNode n) { return n.getType() == ControlFlowNodeType.LoopCondition; } }
for (final ControlFlowEdge edge : conditionNode.getIncoming()) { final ControlFlowNode from = edge.getFrom(); final Statement statement = from.getPreviousStatement(); final ArrayDeque<ControlFlowEdge> agenda = new ArrayDeque<>(); agenda.addAll(conditionNode.getIncoming()); visited.addAll(conditionNode.getIncoming()); final Statement jump = from.getNextStatement(); if (jump.getPreviousStatement() != null) { incoming.add(jump.getPreviousStatement()); final Statement previousStatement = from.getPreviousStatement(); if (from.getType() == ControlFlowNodeType.EndNode) { if (previousStatement instanceof TryCatchStatement) { incoming.add(previousStatement); for (final ControlFlowEdge e : from.getIncoming()) { if (visited.add(e)) { agenda.addLast(e);
final void annotateLeaveEdgesWithTryFinallyBlocks() { for (final ControlFlowNode n : nodes) { for (final ControlFlowEdge edge : n.getOutgoing()) { if (edge.getType() != ControlFlowEdgeType.Jump) { final Statement gotoStatement = edge.getFrom().getNextStatement(); gotoStatement instanceof ContinueStatement; final Statement targetStatement = edge.getTo().getPreviousStatement() != null ? edge.getTo().getPreviousStatement() : edge.getTo().getNextStatement();
final ControlFlowNode handleStatementList(final AstNodeCollection<Statement> statements, final ControlFlowNode source) { ControlFlowNode childNode = null; for (final Statement statement : statements) { if (childNode == null) { childNode = createStartNode(statement); if (source != null) { connect(source, childNode); } } assert childNode.getNextStatement() == statement; childNode = statement.acceptVisitor(this, childNode); assert childNode.getPreviousStatement() == statement; } return childNode != null ? childNode : source; }
final ControlFlowNode labelNode; if (gotoStatement.getNextStatement() instanceof BreakStatement) { label = ((BreakStatement) gotoStatement.getNextStatement()).getLabel(); else if (gotoStatement.getNextStatement() instanceof ContinueStatement) { label = ((ContinueStatement) gotoStatement.getNextStatement()).getLabel(); label = ((GotoStatement) gotoStatement.getNextStatement()).getLabel();
for (final ControlFlowEdge edge : conditionNode.getIncoming()) { final ControlFlowNode from = edge.getFrom(); final Statement statement = from.getPreviousStatement(); final ArrayDeque<ControlFlowEdge> agenda = new ArrayDeque<>(); agenda.addAll(conditionNode.getIncoming()); visited.addAll(conditionNode.getIncoming()); final Statement jump = from.getNextStatement(); if (jump.getPreviousStatement() != null) { incoming.add(jump.getPreviousStatement()); final Statement previousStatement = from.getPreviousStatement(); if (from.getType() == ControlFlowNodeType.EndNode) { if (previousStatement instanceof TryCatchStatement) { incoming.add(previousStatement); for (final ControlFlowEdge e : from.getIncoming()) { if (visited.add(e)) { agenda.addLast(e);
final void annotateLeaveEdgesWithTryFinallyBlocks() { for (final ControlFlowNode n : nodes) { for (final ControlFlowEdge edge : n.getOutgoing()) { if (edge.getType() != ControlFlowEdgeType.Jump) { final Statement gotoStatement = edge.getFrom().getNextStatement(); gotoStatement instanceof ContinueStatement; final Statement targetStatement = edge.getTo().getPreviousStatement() != null ? edge.getTo().getPreviousStatement() : edge.getTo().getNextStatement();
final ControlFlowNode handleStatementList(final AstNodeCollection<Statement> statements, final ControlFlowNode source) { ControlFlowNode childNode = null; for (final Statement statement : statements) { if (childNode == null) { childNode = createStartNode(statement); if (source != null) { connect(source, childNode); } } assert childNode.getNextStatement() == statement; childNode = statement.acceptVisitor(this, childNode); assert childNode.getPreviousStatement() == statement; } return childNode != null ? childNode : source; }
final ControlFlowNode labelNode; if (gotoStatement.getNextStatement() instanceof BreakStatement) { label = ((BreakStatement) gotoStatement.getNextStatement()).getLabel(); else if (gotoStatement.getNextStatement() instanceof ContinueStatement) { label = ((ContinueStatement) gotoStatement.getNextStatement()).getLabel(); label = ((GotoStatement) gotoStatement.getNextStatement()).getLabel();
for (final ControlFlowEdge edge : conditionNode.getIncoming()) { final ControlFlowNode from = edge.getFrom(); final Statement statement = from.getPreviousStatement(); final ArrayDeque<ControlFlowEdge> agenda = new ArrayDeque<>(); agenda.addAll(conditionNode.getIncoming()); visited.addAll(conditionNode.getIncoming()); final Statement jump = from.getNextStatement(); if (jump.getPreviousStatement() != null) { incoming.add(jump.getPreviousStatement()); final Statement previousStatement = from.getPreviousStatement(); if (from.getType() == ControlFlowNodeType.EndNode) { if (previousStatement instanceof TryCatchStatement) { incoming.add(previousStatement); for (final ControlFlowEdge e : from.getIncoming()) { if (visited.add(e)) { agenda.addLast(e);
final void annotateLeaveEdgesWithTryFinallyBlocks() { for (final ControlFlowNode n : nodes) { for (final ControlFlowEdge edge : n.getOutgoing()) { if (edge.getType() != ControlFlowEdgeType.Jump) { final Statement gotoStatement = edge.getFrom().getNextStatement(); gotoStatement instanceof ContinueStatement; final Statement targetStatement = edge.getTo().getPreviousStatement() != null ? edge.getTo().getPreviousStatement() : edge.getTo().getNextStatement();
final ControlFlowEdge connect(final ControlFlowNode from, final ControlFlowNode to, final ControlFlowEdgeType type) { final ControlFlowEdge edge = ControlFlowGraphBuilder.this.createEdge(from, to, type); from.getOutgoing().add(edge); to.getIncoming().add(edge); return edge; }
final ControlFlowNode handleStatementList(final AstNodeCollection<Statement> statements, final ControlFlowNode source) { ControlFlowNode childNode = null; for (final Statement statement : statements) { if (childNode == null) { childNode = createStartNode(statement); if (source != null) { connect(source, childNode); } } assert childNode.getNextStatement() == statement; childNode = statement.acceptVisitor(this, childNode); assert childNode.getPreviousStatement() == statement; } return childNode != null ? childNode : source; }
protected ControlFlowNode createNode( final Statement previousStatement, final Statement nextStatement, final ControlFlowNodeType type) { return new ControlFlowNode(previousStatement, nextStatement, type); }
@Override public boolean test(final ControlFlowNode n) { return n.getType() == ControlFlowNodeType.LoopCondition; } }
final ControlFlowNode labelNode; if (gotoStatement.getNextStatement() instanceof BreakStatement) { label = ((BreakStatement) gotoStatement.getNextStatement()).getLabel(); else if (gotoStatement.getNextStatement() instanceof ContinueStatement) { label = ((ContinueStatement) gotoStatement.getNextStatement()).getLabel(); label = ((GotoStatement) gotoStatement.getNextStatement()).getLabel();
final ControlFlowEdge connect(final ControlFlowNode from, final ControlFlowNode to, final ControlFlowEdgeType type) { final ControlFlowEdge edge = ControlFlowGraphBuilder.this.createEdge(from, to, type); from.getOutgoing().add(edge); to.getIncoming().add(edge); return edge; }
protected ControlFlowNode createNode( final Statement previousStatement, final Statement nextStatement, final ControlFlowNodeType type) { return new ControlFlowNode(previousStatement, nextStatement, type); }