# HG changeset patch # User Doug Simon # Date 1404143265 -7200 # Node ID b741f44cb277f251fd8909cf55b79d23fe4c7149 # Parent 8da760bd1575ac9e7dbe5baa975fb407593dc893 filter out subsequent reports for phases that don't clean up their own dead nodes diff -r 8da760bd1575 -r b741f44cb277 graal/com.oracle.graal.printer/src/com/oracle/graal/printer/NoDeadCodeVerifyHandler.java --- a/graal/com.oracle.graal.printer/src/com/oracle/graal/printer/NoDeadCodeVerifyHandler.java Mon Jun 30 17:28:53 2014 +0200 +++ b/graal/com.oracle.graal.printer/src/com/oracle/graal/printer/NoDeadCodeVerifyHandler.java Mon Jun 30 17:47:45 2014 +0200 @@ -25,6 +25,7 @@ import static com.oracle.graal.printer.NoDeadCodeVerifyHandler.Options.*; import java.util.*; +import java.util.concurrent.*; import com.oracle.graal.compiler.common.*; import com.oracle.graal.debug.*; @@ -52,6 +53,12 @@ // @formatter:on } + /** + * Only the first instance of failure at any point is shown. This will also be removed once all + * phases clean up their own dead code. + */ + private static final Map discovered = new ConcurrentHashMap<>(); + public void verify(Object object, String message) { if (NDCV.getValue() != OFF && object instanceof StructuredGraph) { StructuredGraph graph = (StructuredGraph) object; @@ -60,16 +67,20 @@ List after = graph.getNodes().snapshot(); assert after.size() <= before.size(); if (before.size() != after.size()) { - before.removeAll(after); - String prefix = message == null ? "" : message + ": "; - GraalInternalError error = new GraalInternalError("%sfound dead nodes in %s: %s", prefix, graph, before); - if (NDCV.getValue() == INFO) { - System.out.println(error.getMessage()); - } else if (NDCV.getValue() == VERBOSE) { - error.printStackTrace(System.out); - } else { - assert NDCV.getValue() == FATAL; - throw error; + if (discovered.put(message, Boolean.TRUE) == null) { + System.out.println("MESSAGE: " + message); + + before.removeAll(after); + String prefix = message == null ? "" : message + ": "; + GraalInternalError error = new GraalInternalError("%sfound dead nodes in %s: %s", prefix, graph, before); + if (NDCV.getValue() == INFO) { + System.out.println(error.getMessage()); + } else if (NDCV.getValue() == VERBOSE) { + error.printStackTrace(System.out); + } else { + assert NDCV.getValue() == FATAL; + throw error; + } } } }