825 InstanceKlass* defc = m->method_holder(); |
825 InstanceKlass* defc = m->method_holder(); |
826 java_lang_invoke_MemberName::set_clazz(mname(), defc->java_mirror()); |
826 java_lang_invoke_MemberName::set_clazz(mname(), defc->java_mirror()); |
827 } |
827 } |
828 if (!have_name) { |
828 if (!have_name) { |
829 //not java_lang_String::create_from_symbol; let's intern member names |
829 //not java_lang_String::create_from_symbol; let's intern member names |
830 Handle name = StringTable::intern(m->name(), CHECK); |
830 oop name = StringTable::intern(m->name(), CHECK); |
831 java_lang_invoke_MemberName::set_name(mname(), name()); |
831 java_lang_invoke_MemberName::set_name(mname(), name); |
832 } |
832 } |
833 if (!have_type) { |
833 if (!have_type) { |
834 Handle type = java_lang_String::create_from_symbol(m->signature(), CHECK); |
834 Handle type = java_lang_String::create_from_symbol(m->signature(), CHECK); |
835 java_lang_invoke_MemberName::set_type(mname(), type()); |
835 java_lang_invoke_MemberName::set_type(mname(), type()); |
836 } |
836 } |
849 if (!have_defc) { |
849 if (!have_defc) { |
850 java_lang_invoke_MemberName::set_clazz(mname(), defc->java_mirror()); |
850 java_lang_invoke_MemberName::set_clazz(mname(), defc->java_mirror()); |
851 } |
851 } |
852 if (!have_name) { |
852 if (!have_name) { |
853 //not java_lang_String::create_from_symbol; let's intern member names |
853 //not java_lang_String::create_from_symbol; let's intern member names |
854 Handle name = StringTable::intern(fd.name(), CHECK); |
854 oop name = StringTable::intern(fd.name(), CHECK); |
855 java_lang_invoke_MemberName::set_name(mname(), name()); |
855 java_lang_invoke_MemberName::set_name(mname(), name); |
856 } |
856 } |
857 if (!have_type) { |
857 if (!have_type) { |
858 // If it is a primitive field type, don't mess with short strings like "I". |
858 // If it is a primitive field type, don't mess with short strings like "I". |
859 Handle type = field_signature_type_or_null(fd.signature()); |
859 Handle type (THREAD, field_signature_type_or_null(fd.signature())); |
860 if (type.is_null()) { |
860 if (type.is_null()) { |
861 java_lang_String::create_from_symbol(fd.signature(), CHECK); |
861 type = java_lang_String::create_from_symbol(fd.signature(), CHECK); |
862 } |
862 } |
863 java_lang_invoke_MemberName::set_type(mname(), type()); |
863 java_lang_invoke_MemberName::set_type(mname(), type()); |
864 } |
864 } |
865 return; |
865 return; |
866 } |
866 } |
1013 |
1013 |
1014 void MethodHandles::flush_dependent_nmethods(Handle call_site, Handle target) { |
1014 void MethodHandles::flush_dependent_nmethods(Handle call_site, Handle target) { |
1015 assert_lock_strong(Compile_lock); |
1015 assert_lock_strong(Compile_lock); |
1016 |
1016 |
1017 int marked = 0; |
1017 int marked = 0; |
1018 CallSiteDepChange changes(call_site(), target()); |
1018 CallSiteDepChange changes(call_site, target); |
1019 { |
1019 { |
1020 NoSafepointVerifier nsv; |
1020 NoSafepointVerifier nsv; |
1021 MutexLockerEx mu2(CodeCache_lock, Mutex::_no_safepoint_check_flag); |
1021 MutexLockerEx mu2(CodeCache_lock, Mutex::_no_safepoint_check_flag); |
1022 |
1022 |
1023 oop context = java_lang_invoke_CallSite::context(call_site()); |
1023 oop context = java_lang_invoke_CallSite::context(call_site()); |
1229 if (reference_klass != NULL && reference_klass->is_instance_klass()) { |
1229 if (reference_klass != NULL && reference_klass->is_instance_klass()) { |
1230 // Emulate LinkResolver::check_klass_accessability. |
1230 // Emulate LinkResolver::check_klass_accessability. |
1231 Klass* caller = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(caller_jh)); |
1231 Klass* caller = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(caller_jh)); |
1232 if (caller != SystemDictionary::Object_klass() |
1232 if (caller != SystemDictionary::Object_klass() |
1233 && Reflection::verify_class_access(caller, |
1233 && Reflection::verify_class_access(caller, |
1234 reference_klass, |
1234 InstanceKlass::cast(reference_klass), |
1235 true) != Reflection::ACCESS_OK) { |
1235 true) != Reflection::ACCESS_OK) { |
1236 THROW_MSG_NULL(vmSymbols::java_lang_InternalError(), reference_klass->external_name()); |
1236 THROW_MSG_NULL(vmSymbols::java_lang_InternalError(), reference_klass->external_name()); |
1237 } |
1237 } |
1238 } |
1238 } |
1239 } |
1239 } |
1303 JVM_ENTRY(jobject, MHN_getMemberVMInfo(JNIEnv *env, jobject igcls, jobject mname_jh)) { |
1303 JVM_ENTRY(jobject, MHN_getMemberVMInfo(JNIEnv *env, jobject igcls, jobject mname_jh)) { |
1304 if (mname_jh == NULL) return NULL; |
1304 if (mname_jh == NULL) return NULL; |
1305 Handle mname(THREAD, JNIHandles::resolve_non_null(mname_jh)); |
1305 Handle mname(THREAD, JNIHandles::resolve_non_null(mname_jh)); |
1306 intptr_t vmindex = java_lang_invoke_MemberName::vmindex(mname()); |
1306 intptr_t vmindex = java_lang_invoke_MemberName::vmindex(mname()); |
1307 Metadata* vmtarget = java_lang_invoke_MemberName::vmtarget(mname()); |
1307 Metadata* vmtarget = java_lang_invoke_MemberName::vmtarget(mname()); |
1308 objArrayHandle result = oopFactory::new_objArray(SystemDictionary::Object_klass(), 2, CHECK_NULL); |
1308 objArrayHandle result = oopFactory::new_objArray_handle(SystemDictionary::Object_klass(), 2, CHECK_NULL); |
1309 jvalue vmindex_value; vmindex_value.j = (long)vmindex; |
1309 jvalue vmindex_value; vmindex_value.j = (long)vmindex; |
1310 oop x = java_lang_boxing_object::create(T_LONG, &vmindex_value, CHECK_NULL); |
1310 oop x = java_lang_boxing_object::create(T_LONG, &vmindex_value, CHECK_NULL); |
1311 result->obj_at_put(0, x); |
1311 result->obj_at_put(0, x); |
1312 x = NULL; |
1312 x = NULL; |
1313 if (vmtarget == NULL) { |
1313 if (vmtarget == NULL) { |