Mercurial > hg > graal-jvmci-8
changeset 24229:190f5f33b7d3
hosted use of JVMCI can crash VM under -Xint (JDK-8187315)
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Thu, 07 Sep 2017 15:17:51 +0200 |
parents | 5069d3bf9011 |
children | b9b116e02a3f |
files | src/share/vm/jvmci/jvmciCompiler.hpp src/share/vm/jvmci/jvmciCompilerToVM.cpp src/share/vm/jvmci/jvmciRuntime.cpp src/share/vm/prims/jni.cpp |
diffstat | 4 files changed, 8 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/vm/jvmci/jvmciCompiler.hpp Tue Aug 29 14:14:13 2017 +0200 +++ b/src/share/vm/jvmci/jvmciCompiler.hpp Thu Sep 07 15:17:51 2017 +0200 @@ -49,10 +49,13 @@ public: JVMCICompiler(); - static JVMCICompiler* instance(TRAPS) { + static JVMCICompiler* instance(bool require_non_null, TRAPS) { if (!EnableJVMCI) { THROW_MSG_NULL(vmSymbols::java_lang_InternalError(), "JVMCI is not enabled") } + if (_instance == NULL && require_non_null) { + THROW_MSG_NULL(vmSymbols::java_lang_InternalError(), "The JVMCI compiler instance has not been created"); + } return _instance; }
--- a/src/share/vm/jvmci/jvmciCompilerToVM.cpp Tue Aug 29 14:14:13 2017 +0200 +++ b/src/share/vm/jvmci/jvmciCompilerToVM.cpp Thu Sep 07 15:17:51 2017 +0200 @@ -1001,7 +1001,7 @@ Handle installed_code_handle = JNIHandles::resolve(installed_code); Handle speculation_log_handle = JNIHandles::resolve(speculation_log); - JVMCICompiler* compiler = JVMCICompiler::instance(CHECK_(JNI_ERR)); + JVMCICompiler* compiler = JVMCICompiler::instance(true, CHECK_(JNI_ERR)); TraceTime install_time("installCode", JVMCICompiler::codeInstallTimer()); CodeInstaller installer; @@ -1053,7 +1053,7 @@ C2V_END C2V_VMENTRY(void, resetCompilationStatistics, (JNIEnv *jniEnv, jobject)) - JVMCICompiler* compiler = JVMCICompiler::instance(CHECK); + JVMCICompiler* compiler = JVMCICompiler::instance(true, CHECK); CompilerStatistics* stats = compiler->stats(); stats->_standard.reset(); stats->_osr.reset();
--- a/src/share/vm/jvmci/jvmciRuntime.cpp Tue Aug 29 14:14:13 2017 +0200 +++ b/src/share/vm/jvmci/jvmciRuntime.cpp Thu Sep 07 15:17:51 2017 +0200 @@ -870,7 +870,7 @@ } CompLevel JVMCIRuntime::adjust_comp_level_inner(methodHandle method, bool is_osr, CompLevel level, JavaThread* thread) { - JVMCICompiler* compiler = JVMCICompiler::instance(thread); + JVMCICompiler* compiler = JVMCICompiler::instance(false, thread); if (compiler != NULL && compiler->is_bootstrapping()) { return level; }
--- a/src/share/vm/prims/jni.cpp Tue Aug 29 14:14:13 2017 +0200 +++ b/src/share/vm/prims/jni.cpp Thu Sep 07 15:17:51 2017 +0200 @@ -5237,7 +5237,7 @@ // JVMCI is initialized on a CompilerThread if (BootstrapJVMCI) { JavaThread* THREAD = thread; - JVMCICompiler* compiler = JVMCICompiler::instance(CATCH); + JVMCICompiler* compiler = JVMCICompiler::instance(true, CATCH); compiler->bootstrap(THREAD); if (HAS_PENDING_EXCEPTION) { HandleMark hm;