# HG changeset patch # User Peter Hofer # Date 1306336253 -7200 # Node ID 39a9d62e4c602a433961e762fe7975da9c863baf # Parent 847dcd4dbd4c3fb63364d3535b8cb35b14c9a4a9 IdealGraph visualization: Create a graph that is identical to the GraphViz one, except for some missing unconnected slots diff -r 847dcd4dbd4c -r 39a9d62e4c60 graal/GraalCompiler/src/com/sun/c1x/debug/IdealGraphPrinter.java --- a/graal/GraalCompiler/src/com/sun/c1x/debug/IdealGraphPrinter.java Wed May 25 12:20:08 2011 +0200 +++ b/graal/GraalCompiler/src/com/sun/c1x/debug/IdealGraphPrinter.java Wed May 25 17:10:53 2011 +0200 @@ -36,12 +36,14 @@ private static class Edge { final int from; final int to; - final int index; + final int fromIndex; + final int toIndex; - Edge(int from, int to, int index) { + Edge(int from, int fromIndex, int to, int toIndex) { this.from = from; + this.fromIndex = fromIndex; this.to = to; - this.index = index; + this.toIndex = toIndex; } } @@ -139,18 +141,22 @@ stream.printf("

%s

", escape(name)); stream.println(""); - int index = 0; - for (Node predecessor : node.predecessors()) { - if (predecessor != Node.Null && !omittedClasses.contains(predecessor.getClass())) { - edges.add(new Edge(predecessor.id(), node.id(), index)); + // successors + int fromIndex = 0; + for (Node successor : node.successors()) { + if (successor != Node.Null && !omittedClasses.contains(successor.getClass())) { + edges.add(new Edge(node.id(), fromIndex, successor.id(), 0)); } - index++; + fromIndex++; } + + // inputs + int toIndex = 1; for (Node input : node.inputs()) { if (input != Node.Null && !omittedClasses.contains(input.getClass())) { - edges.add(new Edge(input.id(), node.id(), index)); + edges.add(new Edge(input.id(), input.successors().size(), node.id(), toIndex)); } - index++; + toIndex++; } } @@ -158,7 +164,7 @@ } private void printEdge(Edge edge) { - stream.printf(" %n", edge.from, edge.to, edge.index); + stream.printf(" %n", edge.from, edge.fromIndex, edge.to, edge.toIndex); } private String escape(String s) { diff -r 847dcd4dbd4c -r 39a9d62e4c60 src/share/tools/IdealGraphVisualizer/ServerCompiler/src/com/sun/hotspot/igv/servercompiler/ServerCompilerScheduler.java --- a/src/share/tools/IdealGraphVisualizer/ServerCompiler/src/com/sun/hotspot/igv/servercompiler/ServerCompilerScheduler.java Wed May 25 12:20:08 2011 +0200 +++ b/src/share/tools/IdealGraphVisualizer/ServerCompiler/src/com/sun/hotspot/igv/servercompiler/ServerCompilerScheduler.java Wed May 25 17:10:53 2011 +0200 @@ -538,15 +538,19 @@ } private Node findRoot() { + Node node0 = null; for (Node n : nodes) { InputNode inputNode = n.inputNode; if (inputNode.getProperties().get("name").equals("Root")) { return n; + } else if (inputNode.getId() == 0) { + // use as fallback in case no root node is found + node0 = n; } } - return null; + return node0; } public void buildUpGraph() {