1166 Handle target (THREAD, JNIHandles::resolve(target_jh)); |
1166 Handle target (THREAD, JNIHandles::resolve(target_jh)); |
1167 { |
1167 { |
1168 // Walk all nmethods depending on this call site. |
1168 // Walk all nmethods depending on this call site. |
1169 MutexLocker mu(Compile_lock, thread); |
1169 MutexLocker mu(Compile_lock, thread); |
1170 Universe::flush_dependents_on(call_site, target); |
1170 Universe::flush_dependents_on(call_site, target); |
1171 } |
1171 java_lang_invoke_CallSite::set_target(call_site(), target()); |
1172 java_lang_invoke_CallSite::set_target(call_site(), target()); |
1172 } |
1173 } |
1173 } |
1174 JVM_END |
1174 JVM_END |
1175 |
1175 |
1176 JVM_ENTRY(void, MHN_setCallSiteTargetVolatile(JNIEnv* env, jobject igcls, jobject call_site_jh, jobject target_jh)) { |
1176 JVM_ENTRY(void, MHN_setCallSiteTargetVolatile(JNIEnv* env, jobject igcls, jobject call_site_jh, jobject target_jh)) { |
1177 Handle call_site(THREAD, JNIHandles::resolve_non_null(call_site_jh)); |
1177 Handle call_site(THREAD, JNIHandles::resolve_non_null(call_site_jh)); |
1178 Handle target (THREAD, JNIHandles::resolve(target_jh)); |
1178 Handle target (THREAD, JNIHandles::resolve(target_jh)); |
1179 { |
1179 { |
1180 // Walk all nmethods depending on this call site. |
1180 // Walk all nmethods depending on this call site. |
1181 MutexLocker mu(Compile_lock, thread); |
1181 MutexLocker mu(Compile_lock, thread); |
1182 Universe::flush_dependents_on(call_site, target); |
1182 Universe::flush_dependents_on(call_site, target); |
1183 } |
1183 java_lang_invoke_CallSite::set_target_volatile(call_site(), target()); |
1184 java_lang_invoke_CallSite::set_target_volatile(call_site(), target()); |
1184 } |
1185 } |
1185 } |
1186 JVM_END |
1186 JVM_END |
1187 |
1187 |
1188 /// JVM_RegisterMethodHandleMethods |
1188 /// JVM_RegisterMethodHandleMethods |
1189 |
1189 |