From bfe4e0e4a2996daccad275bb5554fd9486c8e0ed Mon Sep 17 00:00:00 2001 From: Dean Long Date: Wed, 13 Dec 2017 20:35:09 -0800 Subject: [PATCH] 8193323: Crash in "failed dependencies, but counter didn't change" with enabled UseJVMCICompiler Reviewed-by: kvn --- src/hotspot/share/compiler/compileBroker.cpp | 24 ++++++++++++------- src/hotspot/share/jvmci/jvmciCompilerToVM.cpp | 4 ++++ 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/src/hotspot/share/compiler/compileBroker.cpp b/src/hotspot/share/compiler/compileBroker.cpp index a1354fe08f4..b62ccd936bb 100644 --- a/src/hotspot/share/compiler/compileBroker.cpp +++ b/src/hotspot/share/compiler/compileBroker.cpp @@ -1852,17 +1852,23 @@ void CompileBroker::invoke_compiler_on_method(CompileTask* task) { TraceTime t1("compilation", &time); EventCompilation event; - JVMCIEnv env(task, system_dictionary_modification_counter); - methodHandle method(thread, target_handle); - jvmci->compile_method(method, osr_bci, &env); + // Skip redefined methods + if (target_handle->is_old()) { + failure_reason = "redefined method"; + retry_message = "not retryable"; + compilable = ciEnv::MethodCompilable_never; + } else { + JVMCIEnv env(task, system_dictionary_modification_counter); + methodHandle method(thread, target_handle); + jvmci->compile_method(method, osr_bci, &env); - post_compile(thread, task, event, task->code() != NULL, NULL); - - failure_reason = env.failure_reason(); - if (!env.retryable()) { - retry_message = "not retryable"; - compilable = ciEnv::MethodCompilable_not_at_tier; + failure_reason = env.failure_reason(); + if (!env.retryable()) { + retry_message = "not retryable"; + compilable = ciEnv::MethodCompilable_not_at_tier; + } } + post_compile(thread, task, event, task->code() != NULL, NULL); } else #endif // INCLUDE_JVMCI diff --git a/src/hotspot/share/jvmci/jvmciCompilerToVM.cpp b/src/hotspot/share/jvmci/jvmciCompilerToVM.cpp index c0509df788b..fb89dba68f4 100644 --- a/src/hotspot/share/jvmci/jvmciCompilerToVM.cpp +++ b/src/hotspot/share/jvmci/jvmciCompilerToVM.cpp @@ -761,6 +761,10 @@ C2V_END C2V_VMENTRY(jboolean, isCompilable,(JNIEnv *, jobject, jobject jvmci_method)) methodHandle method = CompilerToVM::asMethod(jvmci_method); + // Skip redefined methods + if (method->is_old()) { + return false; + } return !method->is_not_compilable(CompLevel_full_optimization); C2V_END