2735 return best; |
2735 return best; |
2736 } |
2736 } |
2737 return NULL; |
2737 return NULL; |
2738 } |
2738 } |
2739 |
2739 |
2740 oop InstanceKlass::add_member_name(Handle mem_name, bool intern) { |
2740 bool InstanceKlass::add_member_name(Handle mem_name) { |
2741 jweak mem_name_wref = JNIHandles::make_weak_global(mem_name); |
2741 jweak mem_name_wref = JNIHandles::make_weak_global(mem_name); |
2742 MutexLocker ml(MemberNameTable_lock); |
2742 MutexLocker ml(MemberNameTable_lock); |
2743 DEBUG_ONLY(NoSafepointVerifier nsv); |
2743 DEBUG_ONLY(NoSafepointVerifier nsv); |
2744 |
2744 |
2745 // Check if method has been redefined while taking out MemberNameTable_lock, if so |
2745 // Check if method has been redefined while taking out MemberNameTable_lock, if so |
2746 // return false. We cannot cache obsolete methods. They will crash when the function |
2746 // return false. We cannot cache obsolete methods. They will crash when the function |
2747 // is called! |
2747 // is called! |
2748 Method* method = (Method*)java_lang_invoke_MemberName::vmtarget(mem_name()); |
2748 Method* method = (Method*)java_lang_invoke_MemberName::vmtarget(mem_name()); |
2749 if (method->is_obsolete()) { |
2749 if (method->is_obsolete()) { |
2750 return NULL; |
2750 return false; |
2751 } else if (method->is_old()) { |
2751 } else if (method->is_old()) { |
2752 // Replace method with redefined version |
2752 // Replace method with redefined version |
2753 java_lang_invoke_MemberName::set_vmtarget(mem_name(), method_with_idnum(method->method_idnum())); |
2753 java_lang_invoke_MemberName::set_vmtarget(mem_name(), method_with_idnum(method->method_idnum())); |
2754 } |
2754 } |
2755 |
2755 |
2756 if (_member_names == NULL) { |
2756 if (_member_names == NULL) { |
2757 _member_names = new (ResourceObj::C_HEAP, mtClass) MemberNameTable(idnum_allocated_count()); |
2757 _member_names = new (ResourceObj::C_HEAP, mtClass) MemberNameTable(idnum_allocated_count()); |
2758 } |
2758 } |
2759 if (intern) { |
2759 _member_names->add_member_name(mem_name_wref); |
2760 return _member_names->find_or_add_member_name(mem_name_wref); |
2760 return true; |
2761 } else { |
|
2762 return _member_names->add_member_name(mem_name_wref); |
|
2763 } |
|
2764 } |
2761 } |
2765 |
2762 |
2766 // ----------------------------------------------------------------------------------------------------- |
2763 // ----------------------------------------------------------------------------------------------------- |
2767 // Printing |
2764 // Printing |
2768 |
2765 |