# HG changeset patch # User Doug Simon # Date 1402677705 -7200 # Node ID 5d84706642ce67cc9dfc7d0e7a712fd1a36bcd37 # Parent e54507c88a93bf96cb3ed69c1abf7d4d22b70852 ensure a DebugEnvironment is initialized for native compiler threads diff -r e54507c88a93 -r 5d84706642ce graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/CompilationTask.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/CompilationTask.java Fri Jun 13 17:41:42 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/CompilationTask.java Fri Jun 13 18:41:45 2014 +0200 @@ -63,6 +63,7 @@ import com.oracle.graal.nodes.spi.*; import com.oracle.graal.phases.*; import com.oracle.graal.phases.tiers.*; +import com.oracle.graal.printer.*; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; @@ -490,21 +491,31 @@ } /** - * Entry point for the VM to schedule a compilation for a metaspace Method. + * Schedules compilation of a metaspace Method. * * Called from the VM. */ @SuppressWarnings("unused") private static void compileMetaspaceMethod(long metaspaceMethod, final int entryBCI, long ctask, final boolean blocking) { - final HotSpotResolvedJavaMethod method = HotSpotResolvedJavaMethod.fromMetaspace(metaspaceMethod); if (ctask != 0L) { + // Ensure a Graal runtime is initialized prior to Debug being initialized as the former + // may include processing command line options used by the latter. + Graal.getRuntime(); + + // Ensure a debug configuration for this thread is initialized + if (Debug.isEnabled() && DebugScope.getConfig() == null) { + DebugEnvironment.initialize(System.out); + } + // This is on a VM CompilerThread - no user frames exist + final HotSpotResolvedJavaMethod method = HotSpotResolvedJavaMethod.fromMetaspace(metaspaceMethod); compileMethod(method, entryBCI, ctask, false); } else { // We have to use a privileged action here because compilations are // enqueued from user code which very likely contains unprivileged frames. AccessController.doPrivileged(new PrivilegedAction() { public Void run() { + final HotSpotResolvedJavaMethod method = HotSpotResolvedJavaMethod.fromMetaspace(metaspaceMethod); compileMethod(method, entryBCI, 0L, blocking); return null; } diff -r e54507c88a93 -r 5d84706642ce graal/com.oracle.graal.printer/src/com/oracle/graal/printer/DebugEnvironment.java --- a/graal/com.oracle.graal.printer/src/com/oracle/graal/printer/DebugEnvironment.java Fri Jun 13 17:41:42 2014 +0200 +++ b/graal/com.oracle.graal.printer/src/com/oracle/graal/printer/DebugEnvironment.java Fri Jun 13 18:41:45 2014 +0200 @@ -37,7 +37,7 @@ public static GraalDebugConfig initialize(PrintStream log) { // Ensure Graal runtime is initialized prior to Debug being initialized as the former - // included processing command line options used by the latter. + // may include processing command line options used by the latter. Graal.getRuntime(); if (!Debug.isEnabled()) {