private void visitBackward(NodeBitMap visited, Node node) { if (node != null && !visited.isMarked(node)) { visited.mark(node); for (Node successor : node.successors()) { visitBackward(visited, successor); } for (Node usage : node.usages()) { visitBackward(visited, usage); } nodes.add(node); } }
public static GraphOrder backwardGraph(Graph graph) { GraphOrder result = new GraphOrder(); NodeBitMap visited = graph.createNodeBitMap(); for (Node node : forwardGraph(graph)) { result.visitBackward(visited, node); } return result; }