2607 if (best == NULL || (osr->comp_level() > best->comp_level())) {
2608 if (osr->comp_level() == CompLevel_highest_tier) {
2609 // Found the best possible - return it.
2610 return osr;
2611 }
2612 best = osr;
2613 }
2614 }
2615 }
2616 osr = osr->osr_link();
2617 }
2618 if (best != NULL && best->comp_level() >= comp_level && match_level == false) {
2619 return best;
2620 }
2621 return NULL;
2622 }
2623
2624 bool InstanceKlass::add_member_name(Handle mem_name) {
2625 jweak mem_name_wref = JNIHandles::make_weak_global(mem_name);
2626 MutexLocker ml(MemberNameTable_lock);
2627 DEBUG_ONLY(No_Safepoint_Verifier nsv);
2628
2629 // Check if method has been redefined while taking out MemberNameTable_lock, if so
2630 // return false. We cannot cache obsolete methods. They will crash when the function
2631 // is called!
2632 Method* method = (Method*)java_lang_invoke_MemberName::vmtarget(mem_name());
2633 if (method->is_obsolete()) {
2634 return false;
2635 } else if (method->is_old()) {
2636 // Replace method with redefined version
2637 java_lang_invoke_MemberName::set_vmtarget(mem_name(), method_with_idnum(method->method_idnum()));
2638 }
2639
2640 if (_member_names == NULL) {
2641 _member_names = new (ResourceObj::C_HEAP, mtClass) MemberNameTable(idnum_allocated_count());
2642 }
2643 _member_names->add_member_name(mem_name_wref);
2644 return true;
2645 }
2646
2647 // -----------------------------------------------------------------------------------------------------
|
2607 if (best == NULL || (osr->comp_level() > best->comp_level())) {
2608 if (osr->comp_level() == CompLevel_highest_tier) {
2609 // Found the best possible - return it.
2610 return osr;
2611 }
2612 best = osr;
2613 }
2614 }
2615 }
2616 osr = osr->osr_link();
2617 }
2618 if (best != NULL && best->comp_level() >= comp_level && match_level == false) {
2619 return best;
2620 }
2621 return NULL;
2622 }
2623
2624 bool InstanceKlass::add_member_name(Handle mem_name) {
2625 jweak mem_name_wref = JNIHandles::make_weak_global(mem_name);
2626 MutexLocker ml(MemberNameTable_lock);
2627 DEBUG_ONLY(NoSafepointVerifier nsv);
2628
2629 // Check if method has been redefined while taking out MemberNameTable_lock, if so
2630 // return false. We cannot cache obsolete methods. They will crash when the function
2631 // is called!
2632 Method* method = (Method*)java_lang_invoke_MemberName::vmtarget(mem_name());
2633 if (method->is_obsolete()) {
2634 return false;
2635 } else if (method->is_old()) {
2636 // Replace method with redefined version
2637 java_lang_invoke_MemberName::set_vmtarget(mem_name(), method_with_idnum(method->method_idnum()));
2638 }
2639
2640 if (_member_names == NULL) {
2641 _member_names = new (ResourceObj::C_HEAP, mtClass) MemberNameTable(idnum_allocated_count());
2642 }
2643 _member_names->add_member_name(mem_name_wref);
2644 return true;
2645 }
2646
2647 // -----------------------------------------------------------------------------------------------------
|