stat.addSuccessor(newedge); stat.addSuccessor(newedge);
ifparent.getFirst().addSuccessor(ifedge);
ifedge.closure = null; ifparent.getFirst().addSuccessor(ifedge); ifparent.getFirst().addSuccessor(ifedge); ifparent.setIfEdge(ifedge); ifparent.setIfstat(ifinner);
: edgeold.closure); stnew.addSuccessor(edgenew);
firstif.getFirst().removeSuccessor(ifedge); second.addSuccessor(new StatEdge(ifedge.getType(), second, ifedge.getDestination(), ifedge.closure)); firstif.getFirst().addSuccessor(newifedge); firstif.setIfstat(second);
oldstat.removeSuccessor(edge); edge.setSource(newstat); newstat.addSuccessor(edge);
public static boolean splitIrreducibleNode(Statement statement) { Statement splitnode = getCandidateForSplitting(statement); if (splitnode == null) { return false; } StatEdge enteredge = splitnode.getPredecessorEdges(StatEdge.TYPE_REGULAR).iterator().next(); // copy the smallest statement Statement splitcopy = copyStatement(splitnode, null, new HashMap<>()); initCopiedStatement(splitcopy); // insert the copy splitcopy.setParent(statement); statement.getStats().addWithKey(splitcopy, splitcopy.id); // switch input edges for (StatEdge prededge : splitnode.getPredecessorEdges(Statement.STATEDGE_DIRECT_ALL)) { if (prededge.getSource() == enteredge.getSource() || prededge.closure == enteredge.getSource()) { splitnode.removePredecessor(prededge); prededge.getSource().changeEdgeNode(Statement.DIRECTION_FORWARD, prededge, splitcopy); splitcopy.addPredecessor(prededge); } } // connect successors for (StatEdge succ : splitnode.getSuccessorEdges(Statement.STATEDGE_DIRECT_ALL)) { splitcopy.addSuccessor(new StatEdge(succ.getType(), splitcopy, succ.getDestination(), succ.closure)); } return true; }
sequence.getStats().get(i).addSuccessor(new StatEdge(StatEdge.TYPE_REGULAR, sequence.getStats().get(i), sequence.getStats().get(i + 1)));
last.addSuccessor(new StatEdge(StatEdge.TYPE_REGULAR, last, lst.get(i + 1)));
source.addSuccessor(newedge); ifparent.setIfEdge(newedge); ifparent.setIfstat(block); source.addSuccessor(new StatEdge(StatEdge.TYPE_REGULAR, source, first));
firstst.addSuccessor(new StatEdge(StatEdge.TYPE_BREAK, firstst, dummyexit, root)); stat.addSuccessor(new StatEdge(type, stat, (type == StatEdge.TYPE_CONTINUE) ? general : stsucc, (type == StatEdge.TYPE_REGULAR) ? null : general)); stat.addSuccessor(new StatEdge(stat, stsuccex, range.getExceptionTypes()));
stat.addSuccessor(new StatEdge(stat, handler, edge.getExceptions())); stat.addSuccessor(new StatEdge(StatEdge.TYPE_REGULAR, stat, post));
current.addSuccessor(new StatEdge(StatEdge.TYPE_REGULAR, current, ca.getFirst()));
ifstat.getFirst().addSuccessor(elseedge); ifstat.setElsestat(stelse); ifstat.setElseEdge(elseedge); ifstat.getFirst().addSuccessor(elseedge); ifstat.getFirst().addSuccessor(elseedge); ifstat.getFirst().addSuccessor(newifedge); ifstat.setIfstat(stelse); ifstat.setIfEdge(newifedge);
ifst.getFirst().addSuccessor(newedge); ifst.setIfEdge(newedge); ifst.setIfstat(bstat); stat.addSuccessor(new StatEdge(StatEdge.TYPE_REGULAR, stat, bstat));
ifparent.getFirst().addSuccessor(ifedge);
ifedge.closure = null; ifparent.getFirst().addSuccessor(ifedge); ifparent.getFirst().addSuccessor(ifedge); ifparent.setIfEdge(ifedge); ifparent.setIfstat(ifinner);
: edgeold.closure); stnew.addSuccessor(edgenew);
oldstat.removeSuccessor(edge); edge.setSource(newstat); newstat.addSuccessor(edge);
public static boolean splitIrreducibleNode(Statement statement) { Statement splitnode = getCandidateForSplitting(statement); if (splitnode == null) { return false; } StatEdge enteredge = splitnode.getPredecessorEdges(StatEdge.TYPE_REGULAR).iterator().next(); // copy the smallest statement Statement splitcopy = copyStatement(splitnode, null, new HashMap<>()); initCopiedStatement(splitcopy); // insert the copy splitcopy.setParent(statement); statement.getStats().addWithKey(splitcopy, splitcopy.id); // switch input edges for (StatEdge prededge : splitnode.getPredecessorEdges(Statement.STATEDGE_DIRECT_ALL)) { if (prededge.getSource() == enteredge.getSource() || prededge.closure == enteredge.getSource()) { splitnode.removePredecessor(prededge); prededge.getSource().changeEdgeNode(Statement.DIRECTION_FORWARD, prededge, splitcopy); splitcopy.addPredecessor(prededge); } } // connect successors for (StatEdge succ : splitnode.getSuccessorEdges(Statement.STATEDGE_DIRECT_ALL)) { splitcopy.addSuccessor(new StatEdge(succ.getType(), splitcopy, succ.getDestination(), succ.closure)); } return true; }