3077 return res; |
3077 return res; |
3078 } |
3078 } |
3079 JVM_END |
3079 JVM_END |
3080 |
3080 |
3081 JVM_ENTRY(void, MHN_setCallSiteTargetNormal(JNIEnv* env, jobject igcls, jobject call_site_jh, jobject target_jh)) { |
3081 JVM_ENTRY(void, MHN_setCallSiteTargetNormal(JNIEnv* env, jobject igcls, jobject call_site_jh, jobject target_jh)) { |
3082 oop call_site = JNIHandles::resolve_non_null(call_site_jh); |
3082 Handle call_site(THREAD, JNIHandles::resolve_non_null(call_site_jh)); |
3083 oop target = JNIHandles::resolve(target_jh); |
3083 Handle target (THREAD, JNIHandles::resolve(target_jh)); |
3084 { |
3084 { |
3085 // Walk all nmethods depending on this call site. |
3085 // Walk all nmethods depending on this call site. |
3086 MutexLocker mu(Compile_lock, thread); |
3086 MutexLocker mu(Compile_lock, thread); |
3087 Universe::flush_dependents_on(call_site, target); |
3087 Universe::flush_dependents_on(call_site, target); |
3088 } |
3088 } |
3089 java_lang_invoke_CallSite::set_target(call_site, target); |
3089 java_lang_invoke_CallSite::set_target(call_site(), target()); |
3090 } |
3090 } |
3091 JVM_END |
3091 JVM_END |
3092 |
3092 |
3093 JVM_ENTRY(void, MHN_setCallSiteTargetVolatile(JNIEnv* env, jobject igcls, jobject call_site_jh, jobject target_jh)) { |
3093 JVM_ENTRY(void, MHN_setCallSiteTargetVolatile(JNIEnv* env, jobject igcls, jobject call_site_jh, jobject target_jh)) { |
3094 oop call_site = JNIHandles::resolve_non_null(call_site_jh); |
3094 Handle call_site(THREAD, JNIHandles::resolve_non_null(call_site_jh)); |
3095 oop target = JNIHandles::resolve(target_jh); |
3095 Handle target (THREAD, JNIHandles::resolve(target_jh)); |
3096 { |
3096 { |
3097 // Walk all nmethods depending on this call site. |
3097 // Walk all nmethods depending on this call site. |
3098 MutexLocker mu(Compile_lock, thread); |
3098 MutexLocker mu(Compile_lock, thread); |
3099 Universe::flush_dependents_on(call_site, target); |
3099 Universe::flush_dependents_on(call_site, target); |
3100 } |
3100 } |
3101 java_lang_invoke_CallSite::set_target_volatile(call_site, target); |
3101 java_lang_invoke_CallSite::set_target_volatile(call_site(), target()); |
3102 } |
3102 } |
3103 JVM_END |
3103 JVM_END |
3104 |
3104 |
3105 methodOop MethodHandles::resolve_raise_exception_method(TRAPS) { |
3105 methodOop MethodHandles::resolve_raise_exception_method(TRAPS) { |
3106 if (_raise_exception_method != NULL) { |
3106 if (_raise_exception_method != NULL) { |