# HG changeset patch # User Doug Simon # Date 1408094926 -7200 # Node ID 71f3c23158c9fe59361522583b9176a2c4474163 # Parent 7eca83fd541914711a93f9d32223091507d4a546 class verification errors cause CheckGraalInvariants to fail diff -r 7eca83fd5419 -r 71f3c23158c9 graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/CheckGraalInvariants.java --- 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(); + } }