changeset 21648:610d76a131cd

Merge with 4c146c9367b639ca173f0b0381804b4f50aca822
author Michael Van De Vanter <michael.van.de.vanter@oracle.com>
date Sun, 31 May 2015 17:23:14 -0700
parents ae601ad0b023 (current diff) 4c146c9367b6 (diff)
children 1c76a5662753
files
diffstat 8 files changed, 37 insertions(+), 21 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/CompilationTask.java	Sun May 31 17:19:04 2015 -0700
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/CompilationTask.java	Sun May 31 17:23:14 2015 -0700
@@ -346,8 +346,7 @@
      * @param jvmciEnv address of native GraalEnv object
      * @param id CompileTask::_compile_id
      */
-    @SuppressWarnings("unused")
-    private static void compileMetaspaceMethod(long metaspaceMethod, int entryBCI, long jvmciEnv, int id) {
+    static void compileMetaspaceMethod(long metaspaceMethod, int entryBCI, long jvmciEnv, int id) {
         // 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();
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalVMEventListener.java	Sun May 31 17:19:04 2015 -0700
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalVMEventListener.java	Sun May 31 17:23:14 2015 -0700
@@ -50,4 +50,9 @@
     public void notifyShutdown() {
         HotSpotGraalRuntime.runtime().shutdown();
     }
+
+    @Override
+    public void compileMetaspaceMethod(long metaspaceMethod, int entryBCI, long jvmciEnv, int id) {
+        CompilationTask.compileMetaspaceMethod(metaspaceMethod, entryBCI, jvmciEnv, id);
+    }
 }
--- a/graal/com.oracle.jvmci.hotspot/src/com/oracle/jvmci/hotspot/HotSpotJVMCIRuntime.java	Sun May 31 17:19:04 2015 -0700
+++ b/graal/com.oracle.jvmci.hotspot/src/com/oracle/jvmci/hotspot/HotSpotJVMCIRuntime.java	Sun May 31 17:23:14 2015 -0700
@@ -197,6 +197,8 @@
 
     private final Map<Class<? extends Architecture>, JVMCIBackend> backends = new HashMap<>();
 
+    private final HotSpotVMEventListener vmEventListener;
+
     private HotSpotJVMCIRuntime() {
         CompilerToVM toVM = new CompilerToVMImpl();
         compilerToVm = toVM;
@@ -217,6 +219,8 @@
         try (InitTimer t = timer("create JVMCI backend:", hostArchitecture)) {
             hostBackend = registerBackend(factory.createJVMCIBackend(this, null));
         }
+
+        vmEventListener = Services.loadSingle(HotSpotVMEventListener.class, true);
     }
 
     private JVMCIBackend registerBackend(JVMCIBackend backend) {
@@ -288,11 +292,17 @@
     /**
      * Called from the VM.
      */
-    @SuppressWarnings({"unused", "static-method"})
+    @SuppressWarnings({"unused"})
+    private void compileMetaspaceMethod(long metaspaceMethod, int entryBCI, long jvmciEnv, int id) {
+        vmEventListener.compileMetaspaceMethod(metaspaceMethod, entryBCI, jvmciEnv, id);
+    }
+
+    /**
+     * Called from the VM.
+     */
+    @SuppressWarnings({"unused"})
     private void compileTheWorld() throws Throwable {
-        for (HotSpotVMEventListener l : Services.load(HotSpotVMEventListener.class)) {
-            l.notifyCompileTheWorld();
-        }
+        vmEventListener.notifyCompileTheWorld();
     }
 
     /**
@@ -300,10 +310,8 @@
      *
      * Called from the VM.
      */
-    @SuppressWarnings({"unused", "static-method"})
+    @SuppressWarnings({"unused"})
     private void shutdown() throws Exception {
-        for (HotSpotVMEventListener l : Services.load(HotSpotVMEventListener.class)) {
-            l.notifyShutdown();
-        }
+        vmEventListener.notifyShutdown();
     }
 }
--- a/graal/com.oracle.jvmci.hotspot/src/com/oracle/jvmci/hotspot/HotSpotVMEventListener.java	Sun May 31 17:19:04 2015 -0700
+++ b/graal/com.oracle.jvmci.hotspot/src/com/oracle/jvmci/hotspot/HotSpotVMEventListener.java	Sun May 31 17:23:14 2015 -0700
@@ -30,6 +30,12 @@
      * Notifies this client that HotSpot is running in CompileTheWorld mode and the JVMCI compiler
      * should now perform its version of CompileTheWorld.
      */
+    void compileMetaspaceMethod(long metaspaceMethod, int entryBCI, long jvmciEnv, int id);
+
+    /**
+     * Notifies this client that HotSpot is running in CompileTheWorld mode and the JVMCI compiler
+     * should now perform its version of CompileTheWorld.
+     */
     void notifyCompileTheWorld() throws Throwable;
 
     /**
--- a/src/share/vm/classfile/systemDictionary.hpp	Sun May 31 17:19:04 2015 -0700
+++ b/src/share/vm/classfile/systemDictionary.hpp	Sun May 31 17:23:14 2015 -0700
@@ -214,7 +214,6 @@
   JVMCI_ONLY(do_klass(HotSpotObjectConstantImpl_klass,       com_oracle_jvmci_hotspot_HotSpotObjectConstantImpl,           Jvmci)) \
   JVMCI_ONLY(do_klass(HotSpotMetaspaceConstantImpl_klass,    com_oracle_jvmci_hotspot_HotSpotMetaspaceConstantImpl,        Jvmci)) \
   JVMCI_ONLY(do_klass(HotSpotStackFrameReference_klass,      com_oracle_jvmci_hotspot_HotSpotStackFrameReference,          Jvmci)) \
-  JVMCI_ONLY(do_klass(CompilationTask_klass,                 com_oracle_graal_hotspot_CompilationTask,                     Jvmci)) \
   JVMCI_ONLY(do_klass(Assumptions_ConcreteMethod_klass,      com_oracle_jvmci_meta_Assumptions_ConcreteMethod,             Jvmci)) \
   JVMCI_ONLY(do_klass(Assumptions_NoFinalizableSubclass_klass, com_oracle_jvmci_meta_Assumptions_NoFinalizableSubclass,    Jvmci))\
   JVMCI_ONLY(do_klass(Assumptions_ConcreteSubtype_klass,     com_oracle_jvmci_meta_Assumptions_ConcreteSubtype,            Jvmci)) \
--- a/src/share/vm/classfile/vmSymbols.hpp	Sun May 31 17:19:04 2015 -0700
+++ b/src/share/vm/classfile/vmSymbols.hpp	Sun May 31 17:23:14 2015 -0700
@@ -316,7 +316,6 @@
   JVMCI_ONLY(template(com_oracle_jvmci_hotspot_HotSpotObjectConstantImpl,       "com/oracle/jvmci/hotspot/HotSpotObjectConstantImpl"))            \
   JVMCI_ONLY(template(com_oracle_jvmci_hotspot_HotSpotMetaspaceConstantImpl,    "com/oracle/jvmci/hotspot/HotSpotMetaspaceConstantImpl"))         \
   JVMCI_ONLY(template(com_oracle_jvmci_hotspot_HotSpotStackFrameReference,      "com/oracle/jvmci/hotspot/HotSpotStackFrameReference"))           \
-  JVMCI_ONLY(template(com_oracle_graal_hotspot_CompilationTask,                 "com/oracle/graal/hotspot/CompilationTask"))                      \
   JVMCI_ONLY(template(com_oracle_jvmci_meta_JavaConstant,                       "com/oracle/jvmci/meta/JavaConstant"))                            \
   JVMCI_ONLY(template(com_oracle_jvmci_meta_PrimitiveConstant,                  "com/oracle/jvmci/meta/PrimitiveConstant"))                       \
   JVMCI_ONLY(template(com_oracle_jvmci_meta_RawConstant,                        "com/oracle/jvmci/meta/RawConstant"))                             \
--- a/src/share/vm/jvmci/jvmciCompiler.cpp	Sun May 31 17:19:04 2015 -0700
+++ b/src/share/vm/jvmci/jvmciCompiler.cpp	Sun May 31 17:23:14 2015 -0700
@@ -127,11 +127,13 @@
   ResourceMark rm;
   JavaValue result(T_VOID);
   JavaCallArguments args;
+  Handle receiver = JVMCIRuntime::get_HotSpotJVMCIRuntime();
+  args.push_oop(receiver);
   args.push_long((jlong) (address) method());
   args.push_int(entry_bci);
   args.push_long((jlong) (address) env);
   args.push_int(env->task()->compile_id());
-  JavaCalls::call_static(&result, SystemDictionary::CompilationTask_klass(), vmSymbols::compileMetaspaceMethod_name(), vmSymbols::compileMetaspaceMethod_signature(), &args, CHECK_ABORT);
+  JavaCalls::call_special(&result, receiver->klass(), vmSymbols::compileMetaspaceMethod_name(), vmSymbols::compileMetaspaceMethod_signature(), &args, CHECK_ABORT);
 
   _methodsCompiled++;
 }
@@ -158,11 +160,10 @@
 void JVMCICompiler::compile_the_world() {
   HandleMark hm;
   JavaThread* THREAD = JavaThread::current();
-  TempNewSymbol name = SymbolTable::new_symbol("com/oracle/jvmci/hotspot/HotSpotJVMCIRuntime", CHECK_ABORT);
-  KlassHandle klass = JVMCIRuntime::load_required_class(name);
+  Handle receiver = JVMCIRuntime::get_HotSpotJVMCIRuntime();
   TempNewSymbol compileTheWorld = SymbolTable::new_symbol("compileTheWorld", CHECK_ABORT);
   JavaValue result(T_VOID);
   JavaCallArguments args;
-  args.push_oop(JVMCIRuntime::get_HotSpotJVMCIRuntime());
-  JavaCalls::call_special(&result, klass, compileTheWorld, vmSymbols::void_method_signature(), &args, CHECK_ABORT);
+  args.push_oop(receiver);
+  JavaCalls::call_special(&result, receiver->klass(), compileTheWorld, vmSymbols::void_method_signature(), &args, CHECK_ABORT);
 }
--- a/src/share/vm/jvmci/jvmciRuntime.cpp	Sun May 31 17:19:04 2015 -0700
+++ b/src/share/vm/jvmci/jvmciRuntime.cpp	Sun May 31 17:23:14 2015 -0700
@@ -1054,12 +1054,11 @@
     _shutdown_called = true;
     JavaThread* THREAD = JavaThread::current();
     HandleMark hm(THREAD);
-    TempNewSymbol name = SymbolTable::new_symbol("com/oracle/jvmci/hotspot/HotSpotJVMCIRuntime", CHECK_ABORT);
-    KlassHandle klass = load_required_class(name);
+    Handle receiver = get_HotSpotJVMCIRuntime();
     JavaValue result(T_VOID);
     JavaCallArguments args;
-    args.push_oop(get_HotSpotJVMCIRuntime());
-    JavaCalls::call_special(&result, klass, vmSymbols::shutdown_method_name(), vmSymbols::void_method_signature(), &args, CHECK_ABORT);
+    args.push_oop(receiver);
+    JavaCalls::call_special(&result, receiver->klass(), vmSymbols::shutdown_method_name(), vmSymbols::void_method_signature(), &args, CHECK_ABORT);
 
     JNIHandles::destroy_global(_HotSpotJVMCIRuntime_instance);
     _HotSpotJVMCIRuntime_instance = NULL;