Mercurial > hg > graal-jvmci-8
diff src/share/vm/jvmci/jvmciCompiler.cpp @ 22454:76af33d4d504
Make jvmci redefinition safe
author | Tom Rodriguez <tom.rodriguez@oracle.com> |
---|---|
date | Fri, 21 Aug 2015 11:57:29 -0700 |
parents | 7202e96981c6 |
children | d9f5c93a83d3 |
line wrap: on
line diff
--- a/src/share/vm/jvmci/jvmciCompiler.cpp Fri Aug 21 16:35:29 2015 +0200 +++ b/src/share/vm/jvmci/jvmciCompiler.cpp Fri Aug 21 11:57:29 2015 -0700 @@ -24,6 +24,7 @@ #include "precompiled.hpp" #include "memory/oopFactory.hpp" #include "runtime/javaCalls.hpp" +#include "jvmci/jvmciJavaAccess.hpp" #include "jvmci/jvmciCompiler.hpp" #include "jvmci/jvmciEnv.hpp" #include "jvmci/jvmciRuntime.hpp" @@ -123,17 +124,26 @@ } JVMCIRuntime::ensure_jvmci_class_loader_is_initialized(); + jvmci_compute_offsets(); HandleMark hm; ResourceMark rm; + Handle receiver = JVMCIRuntime::get_HotSpotJVMCIRuntime(); + + JavaValue method_result(T_OBJECT); + { + JavaCallArguments args; + args.push_long((jlong) (address) method()); + JavaCalls::call_static(&method_result, SystemDictionary::HotSpotResolvedJavaMethodImpl_klass(), vmSymbols::fromMetaspace_name(), vmSymbols::method_fromMetaspace_signature(), &args, CHECK_ABORT); + } + JavaValue result(T_VOID); JavaCallArguments args; - Handle receiver = JVMCIRuntime::get_HotSpotJVMCIRuntime(); args.push_oop(receiver); - args.push_long((jlong) (address) method()); + args.push_oop((oop)method_result.get_jobject()); args.push_int(entry_bci); args.push_long((jlong) (address) env); args.push_int(env->task()->compile_id()); - JavaCalls::call_special(&result, receiver->klass(), vmSymbols::compileMetaspaceMethod_name(), vmSymbols::compileMetaspaceMethod_signature(), &args, CHECK_ABORT); + JavaCalls::call_special(&result, receiver->klass(), vmSymbols::compileMethod_name(), vmSymbols::compileMethod_signature(), &args, CHECK_ABORT); _methodsCompiled++; }