changeset 16840:71f3c23158c9

class verification errors cause CheckGraalInvariants to fail
author Doug Simon <doug.simon@oracle.com>
date Fri, 15 Aug 2014 11:28:46 +0200
parents 7eca83fd5419
children cbd42807a31f
files graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/CheckGraalInvariants.java
diffstat 1 files changed, 15 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/CheckGraalInvariants.java	Thu Aug 14 23:45:15 2014 +0200
+++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/CheckGraalInvariants.java	Fri Aug 15 11:28:46 2014 +0200
@@ -40,6 +40,7 @@
 import com.oracle.graal.debug.*;
 import com.oracle.graal.graph.*;
 import com.oracle.graal.java.*;
+import com.oracle.graal.nodeinfo.*;
 import com.oracle.graal.nodes.*;
 import com.oracle.graal.phases.*;
 import com.oracle.graal.phases.VerifyPhase.VerificationError;
@@ -114,7 +115,13 @@
         for (String className : classNames) {
             try {
                 Class<?> c = Class.forName(className, false, CheckGraalInvariants.class.getClassLoader());
-                executor.execute(() -> checkClass(c, metaAccess));
+                executor.execute(() -> {
+                    try {
+                        checkClass(c, metaAccess);
+                    } catch (Throwable e) {
+                        errors.add(String.format("Error while checking %s:%n%s", className, printStackTraceToString(e)));
+                    }
+                });
 
                 for (Method m : c.getDeclaredMethods()) {
                     if (Modifier.isNative(m.getModifiers()) || Modifier.isAbstract(m.getModifiers())) {
@@ -138,9 +145,7 @@
                                     // Graal bail outs on certain patterns in Java bytecode (e.g.,
                                     // unbalanced monitors introduced by jacoco).
                                 } catch (Throwable e) {
-                                    StringWriter sw = new StringWriter();
-                                    e.printStackTrace(new PrintWriter(sw));
-                                    errors.add(String.format("Error while checking %s:%n%s", methodName, sw));
+                                    errors.add(String.format("Error while checking %s:%n%s", methodName, printStackTraceToString(e)));
                                 }
                             });
                         }
@@ -218,4 +223,10 @@
         }
         return false;
     }
+
+    private static String printStackTraceToString(Throwable t) {
+        StringWriter sw = new StringWriter();
+        t.printStackTrace(new PrintWriter(sw));
+        return sw.toString();
+    }
 }