8187315: [JVMCI] hosted use of JVMCI can crash VM under -Xint
Reviewed-by: kvn, dlong
This commit is contained in:
parent
614fca959b
commit
40cdb9fd60
@ -55,10 +55,13 @@ private:
|
|||||||
public:
|
public:
|
||||||
JVMCICompiler();
|
JVMCICompiler();
|
||||||
|
|
||||||
static JVMCICompiler* instance(TRAPS) {
|
static JVMCICompiler* instance(bool require_non_null, TRAPS) {
|
||||||
if (!EnableJVMCI) {
|
if (!EnableJVMCI) {
|
||||||
THROW_MSG_NULL(vmSymbols::java_lang_InternalError(), "JVMCI is not enabled")
|
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;
|
return _instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1018,7 +1018,7 @@ C2V_VMENTRY(jint, installCode, (JNIEnv *jniEnv, jobject, jobject target, jobject
|
|||||||
Handle installed_code_handle(THREAD, JNIHandles::resolve(installed_code));
|
Handle installed_code_handle(THREAD, JNIHandles::resolve(installed_code));
|
||||||
Handle speculation_log_handle(THREAD, JNIHandles::resolve(speculation_log));
|
Handle speculation_log_handle(THREAD, 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());
|
TraceTime install_time("installCode", JVMCICompiler::codeInstallTimer());
|
||||||
bool is_immutable_PIC = HotSpotCompiledCode::isImmutablePIC(compiled_code_handle) > 0;
|
bool is_immutable_PIC = HotSpotCompiledCode::isImmutablePIC(compiled_code_handle) > 0;
|
||||||
@ -1136,7 +1136,7 @@ C2V_VMENTRY(jint, getMetadata, (JNIEnv *jniEnv, jobject, jobject target, jobject
|
|||||||
C2V_END
|
C2V_END
|
||||||
|
|
||||||
C2V_VMENTRY(void, resetCompilationStatistics, (JNIEnv *jniEnv, jobject))
|
C2V_VMENTRY(void, resetCompilationStatistics, (JNIEnv *jniEnv, jobject))
|
||||||
JVMCICompiler* compiler = JVMCICompiler::instance(CHECK);
|
JVMCICompiler* compiler = JVMCICompiler::instance(true, CHECK);
|
||||||
CompilerStatistics* stats = compiler->stats();
|
CompilerStatistics* stats = compiler->stats();
|
||||||
stats->_standard.reset();
|
stats->_standard.reset();
|
||||||
stats->_osr.reset();
|
stats->_osr.reset();
|
||||||
|
@ -821,7 +821,7 @@ void JVMCIRuntime::shutdown(TRAPS) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
CompLevel JVMCIRuntime::adjust_comp_level_inner(const methodHandle& method, bool is_osr, CompLevel level, JavaThread* thread) {
|
CompLevel JVMCIRuntime::adjust_comp_level_inner(const 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()) {
|
if (compiler != NULL && compiler->is_bootstrapping()) {
|
||||||
return level;
|
return level;
|
||||||
}
|
}
|
||||||
|
@ -3949,7 +3949,7 @@ static jint JNI_CreateJavaVM_inner(JavaVM **vm, void **penv, void *args) {
|
|||||||
// JVMCI is initialized on a CompilerThread
|
// JVMCI is initialized on a CompilerThread
|
||||||
if (BootstrapJVMCI) {
|
if (BootstrapJVMCI) {
|
||||||
JavaThread* THREAD = thread;
|
JavaThread* THREAD = thread;
|
||||||
JVMCICompiler* compiler = JVMCICompiler::instance(CATCH);
|
JVMCICompiler* compiler = JVMCICompiler::instance(true, CATCH);
|
||||||
compiler->bootstrap(THREAD);
|
compiler->bootstrap(THREAD);
|
||||||
if (HAS_PENDING_EXCEPTION) {
|
if (HAS_PENDING_EXCEPTION) {
|
||||||
HandleMark hm;
|
HandleMark hm;
|
||||||
|
Loading…
Reference in New Issue
Block a user