< prev index next >

src/share/vm/oops/instanceKlass.cpp

Print this page




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 // -----------------------------------------------------------------------------------------------------


< prev index next >