changeset 16106:5d84706642ce

ensure a DebugEnvironment is initialized for native compiler threads
author Doug Simon <doug.simon@oracle.com>
date Fri, 13 Jun 2014 18:41:45 +0200
parents e54507c88a93
children c7db9dc73694
files graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/CompilationTask.java graal/com.oracle.graal.printer/src/com/oracle/graal/printer/DebugEnvironment.java
diffstat 2 files changed, 14 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- 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<Void>() {
                 public Void run() {
+                    final HotSpotResolvedJavaMethod method = HotSpotResolvedJavaMethod.fromMetaspace(metaspaceMethod);
                     compileMethod(method, entryBCI, 0L, blocking);
                     return null;
                 }
--- 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()) {