Mercurial > hg > graal-compiler
changeset 8405:743d0ac1fc81
IGV should not crash when comparing graphs with references to deleted nodes
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Wed, 20 Mar 2013 18:38:55 +0100 |
parents | 24ddd568aa0c |
children | 2bfb9644dcc2 7e281cb9ea10 |
files | src/share/tools/IdealGraphVisualizer/Difference/src/com/sun/hotspot/igv/difference/Difference.java |
diffstat | 1 files changed, 24 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/tools/IdealGraphVisualizer/Difference/src/com/sun/hotspot/igv/difference/Difference.java Wed Mar 20 18:38:28 2013 +0100 +++ b/src/share/tools/IdealGraphVisualizer/Difference/src/com/sun/hotspot/igv/difference/Difference.java Wed Mar 20 18:38:55 2013 +0100 @@ -207,12 +207,16 @@ InputNode nodeTo = inputNodeMap.get(a.getNode(to)); char fromIndex = e.getFromIndex(); char toIndex = e.getToIndex(); - - InputEdge newEdge = new InputEdge(fromIndex, toIndex, nodeFrom.getId(), nodeTo.getId()); - if (!newEdges.contains(newEdge)) { - markAsDeleted(newEdge); - newEdges.add(newEdge); - graph.addEdge(newEdge); + + if (nodeFrom == null || nodeTo == null) { + System.out.println("Unexpected edge : " + from + " -> " + to); + } else { + InputEdge newEdge = new InputEdge(fromIndex, toIndex, nodeFrom.getId(), nodeTo.getId()); + if (!newEdges.contains(newEdge)) { + markAsDeleted(newEdge); + newEdges.add(newEdge); + graph.addEdge(newEdge); + } } } @@ -224,17 +228,21 @@ char fromIndex = e.getFromIndex(); char toIndex = e.getToIndex(); - InputEdge newEdge = new InputEdge(fromIndex, toIndex, nodeFrom.getId(), nodeTo.getId()); - if (!newEdges.contains(newEdge)) { - markAsNew(newEdge); - newEdges.add(newEdge); - graph.addEdge(newEdge); + if (nodeFrom == null || nodeTo == null) { + System.out.println("Unexpected edge : " + from + " -> " + to); } else { - newEdges.remove(newEdge); - graph.removeEdge(newEdge); - markAsSame(newEdge); - newEdges.add(newEdge); - graph.addEdge(newEdge); + InputEdge newEdge = new InputEdge(fromIndex, toIndex, nodeFrom.getId(), nodeTo.getId()); + if (!newEdges.contains(newEdge)) { + markAsNew(newEdge); + newEdges.add(newEdge); + graph.addEdge(newEdge); + } else { + newEdges.remove(newEdge); + graph.removeEdge(newEdge); + markAsSame(newEdge); + newEdges.add(newEdge); + graph.addEdge(newEdge); + } } }