# HG changeset patch # User Michael Van De Vanter # Date 1433118194 25200 # Node ID 610d76a131cdd54be7b096516f96a46771e37867 # Parent ae601ad0b023513103df5916600d022e634a583d# Parent 4c146c9367b639ca173f0b0381804b4f50aca822 Merge with 4c146c9367b639ca173f0b0381804b4f50aca822 diff -r ae601ad0b023 -r 610d76a131cd 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 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(); diff -r ae601ad0b023 -r 610d76a131cd graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalVMEventListener.java --- 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); + } } diff -r ae601ad0b023 -r 610d76a131cd graal/com.oracle.jvmci.hotspot/src/com/oracle/jvmci/hotspot/HotSpotJVMCIRuntime.java --- 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, 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(); } } diff -r ae601ad0b023 -r 610d76a131cd graal/com.oracle.jvmci.hotspot/src/com/oracle/jvmci/hotspot/HotSpotVMEventListener.java --- 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; /** diff -r ae601ad0b023 -r 610d76a131cd src/share/vm/classfile/systemDictionary.hpp --- 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)) \ diff -r ae601ad0b023 -r 610d76a131cd src/share/vm/classfile/vmSymbols.hpp --- 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")) \ diff -r ae601ad0b023 -r 610d76a131cd src/share/vm/jvmci/jvmciCompiler.cpp --- 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); } diff -r ae601ad0b023 -r 610d76a131cd src/share/vm/jvmci/jvmciRuntime.cpp --- 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;