mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-15 08:34:30 +02:00
8193323: Crash in "failed dependencies, but counter didn't change" with enabled UseJVMCICompiler
Reviewed-by: kvn
This commit is contained in:
parent
f1985b2e7e
commit
bfe4e0e4a2
2 changed files with 19 additions and 9 deletions
|
@ -1852,17 +1852,23 @@ void CompileBroker::invoke_compiler_on_method(CompileTask* task) {
|
||||||
TraceTime t1("compilation", &time);
|
TraceTime t1("compilation", &time);
|
||||||
EventCompilation event;
|
EventCompilation event;
|
||||||
|
|
||||||
JVMCIEnv env(task, system_dictionary_modification_counter);
|
// Skip redefined methods
|
||||||
methodHandle method(thread, target_handle);
|
if (target_handle->is_old()) {
|
||||||
jvmci->compile_method(method, osr_bci, &env);
|
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()) {
|
||||||
failure_reason = env.failure_reason();
|
retry_message = "not retryable";
|
||||||
if (!env.retryable()) {
|
compilable = ciEnv::MethodCompilable_not_at_tier;
|
||||||
retry_message = "not retryable";
|
}
|
||||||
compilable = ciEnv::MethodCompilable_not_at_tier;
|
|
||||||
}
|
}
|
||||||
|
post_compile(thread, task, event, task->code() != NULL, NULL);
|
||||||
|
|
||||||
} else
|
} else
|
||||||
#endif // INCLUDE_JVMCI
|
#endif // INCLUDE_JVMCI
|
||||||
|
|
|
@ -761,6 +761,10 @@ C2V_END
|
||||||
|
|
||||||
C2V_VMENTRY(jboolean, isCompilable,(JNIEnv *, jobject, jobject jvmci_method))
|
C2V_VMENTRY(jboolean, isCompilable,(JNIEnv *, jobject, jobject jvmci_method))
|
||||||
methodHandle method = CompilerToVM::asMethod(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);
|
return !method->is_not_compilable(CompLevel_full_optimization);
|
||||||
C2V_END
|
C2V_END
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue