OpenJDK / amber / amber
changeset 56710:b76aee290002
8225492: Update JVMCI
Reviewed-by: iveresov, kvn
author | dnsimon |
---|---|
date | Mon, 10 Jun 2019 15:55:11 -0700 |
parents | 218f5a414379 |
children | 040e1c6dab96 |
files | src/hotspot/share/jvmci/jvmciRuntime.cpp src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.runtime/src/jdk/vm/ci/runtime/JVMCI.java |
diffstat | 2 files changed, 16 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/src/hotspot/share/jvmci/jvmciRuntime.cpp Mon Jun 10 13:42:11 2019 -0400 +++ b/src/hotspot/share/jvmci/jvmciRuntime.cpp Mon Jun 10 15:55:11 2019 -0700 @@ -1339,6 +1339,18 @@ return JVMCI::dependencies_invalid; } +// Reports a pending exception and exits the VM. +static void fatal_exception_in_compile(JVMCIEnv* JVMCIENV, JavaThread* thread, const char* msg) { + // Only report a fatal JVMCI compilation exception once + static volatile int report_init_failure = 0; + if (!report_init_failure && Atomic::cmpxchg(1, &report_init_failure, 0) == 0) { + tty->print_cr("%s:", msg); + JVMCIENV->describe_pending_exception(true); + } + JVMCIENV->clear_pending_exception(); + before_exit(thread); + vm_exit(-1); +} void JVMCIRuntime::compile_method(JVMCIEnv* JVMCIENV, JVMCICompiler* compiler, const methodHandle& method, int entry_bci) { JVMCI_EXCEPTION_CONTEXT @@ -1360,9 +1372,7 @@ HandleMark hm; JVMCIObject receiver = get_HotSpotJVMCIRuntime(JVMCIENV); if (JVMCIENV->has_pending_exception()) { - JVMCIENV->describe_pending_exception(true); - compile_state->set_failure(false, "exception getting HotSpotJVMCIRuntime object"); - return; + fatal_exception_in_compile(JVMCIENV, thread, "Exception during HotSpotJVMCIRuntime initialization"); } JVMCIObject jvmci_method = JVMCIENV->get_jvmci_method(method, JVMCIENV); if (JVMCIENV->has_pending_exception()) { @@ -1397,16 +1407,7 @@ } else { // An uncaught exception here implies failure during compiler initialization. // The only sensible thing to do here is to exit the VM. - - // Only report initialization failure once - static volatile int report_init_failure = 0; - if (!report_init_failure && Atomic::cmpxchg(1, &report_init_failure, 0) == 0) { - tty->print_cr("Exception during JVMCI compiler initialization:"); - JVMCIENV->describe_pending_exception(true); - } - JVMCIENV->clear_pending_exception(); - before_exit((JavaThread*) THREAD); - vm_exit(-1); + fatal_exception_in_compile(JVMCIENV, thread, "Exception during JVMCI compiler initialization"); } if (compiler->is_bootstrapping()) { compiler->set_bootstrap_compilation_request_handled();
--- a/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.runtime/src/jdk/vm/ci/runtime/JVMCI.java Mon Jun 10 13:42:11 2019 -0400 +++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.runtime/src/jdk/vm/ci/runtime/JVMCI.java Mon Jun 10 15:55:11 2019 -0700 @@ -71,6 +71,8 @@ errorMessage.format("Currently used Java home directory is %s.%n", javaHome); errorMessage.format("Currently used VM configuration is: %s", vmName); throw new UnsupportedOperationException(errorMessage.toString()); + } finally { + initializing = false; } } }