@@ -1966,7 +1966,12 @@ Method* JVMCIRuntime::get_method_by_index(const constantPoolHandle& cpool,
19661966// ------------------------------------------------------------------
19671967// Check for changes to the system dictionary during compilation
19681968// class loads, evolution, breakpoints
1969- JVMCI::CodeInstallResult JVMCIRuntime::validate_compile_task_dependencies (Dependencies* dependencies, JVMCICompileState* compile_state, char ** failure_detail) {
1969+ JVMCI::CodeInstallResult JVMCIRuntime::validate_compile_task_dependencies (Dependencies* dependencies,
1970+ JVMCICompileState* compile_state,
1971+ char ** failure_detail,
1972+ bool & failing_dep_is_call_site)
1973+ {
1974+ failing_dep_is_call_site = false ;
19701975 // If JVMTI capabilities were enabled during compile, the compilation is invalidated.
19711976 if (compile_state != nullptr && compile_state->jvmti_state_changed ()) {
19721977 *failure_detail = (char *) " Jvmti state change during compilation invalidated dependencies" ;
@@ -1975,10 +1980,13 @@ JVMCI::CodeInstallResult JVMCIRuntime::validate_compile_task_dependencies(Depend
19751980
19761981 CompileTask* task = compile_state == nullptr ? nullptr : compile_state->task ();
19771982 Dependencies::DepType result = dependencies->validate_dependencies (task, failure_detail);
1983+
19781984 if (result == Dependencies::end_marker) {
19791985 return JVMCI::ok;
19801986 }
1981-
1987+ if (result == Dependencies::call_site_target_value) {
1988+ failing_dep_is_call_site = true ;
1989+ }
19821990 return JVMCI::dependencies_failed;
19831991}
19841992
@@ -2167,11 +2175,13 @@ JVMCI::CodeInstallResult JVMCIRuntime::register_method(JVMCIEnv* JVMCIENV,
21672175 }
21682176
21692177 // Check for {class loads, evolution, breakpoints} during compilation
2170- result = validate_compile_task_dependencies (dependencies, JVMCIENV->compile_state (), &failure_detail);
2178+ JVMCICompileState* compile_state = JVMCIENV->compile_state ();
2179+ bool failing_dep_is_call_site;
2180+ result = validate_compile_task_dependencies (dependencies, compile_state, &failure_detail, failing_dep_is_call_site);
21712181 if (result != JVMCI::ok) {
21722182 // While not a true deoptimization, it is a preemptive decompile.
21732183 MethodData* mdp = method ()->method_data ();
2174- if (mdp != nullptr ) {
2184+ if (mdp != nullptr && !failing_dep_is_call_site ) {
21752185 mdp->inc_decompile_count ();
21762186#ifdef ASSERT
21772187 if (mdp->decompile_count () > (uint)PerMethodRecompilationCutoff) {
0 commit comments