src/share/vm/oops/instanceKlass.cpp

Print this page




2327       } else {
2328         if (best == NULL || (osr->comp_level() > best->comp_level())) {
2329           if (osr->comp_level() == CompLevel_highest_tier) {
2330             // Found the best possible - return it.
2331             OsrList_lock->unlock();
2332             return osr;
2333           }
2334           best = osr;
2335         }
2336       }
2337     }
2338     osr = osr->osr_link();
2339   }
2340   OsrList_lock->unlock();
2341   if (best != NULL && best->comp_level() >= comp_level && match_level == false) {
2342     return best;
2343   }
2344   return NULL;
2345 }
2346 
2347 void instanceKlass::add_member_name(int index, Handle mem_name) {
2348   jweak mem_name_wref = JNIHandles::make_weak_global(mem_name);
2349   MutexLocker ml(MemberNameTable_lock);
2350   assert(0 <= index && index < idnum_allocated_count(), "index is out of bounds");
2351   DEBUG_ONLY(No_Safepoint_Verifier nsv);
2352 
2353   if (_member_names == NULL) {
2354     _member_names = new (ResourceObj::C_HEAP, mtClass) MemberNameTable(idnum_allocated_count());







2355   }
2356   _member_names->add_member_name(index, mem_name_wref);
2357 }
2358 
2359 oop instanceKlass::get_member_name(int index) {
2360   MutexLocker ml(MemberNameTable_lock);
2361   assert(0 <= index && index < idnum_allocated_count(), "index is out of bounds");
2362   DEBUG_ONLY(No_Safepoint_Verifier nsv);
2363 
2364   if (_member_names == NULL) {
2365     return NULL;
2366   }
2367   oop mem_name =_member_names->get_member_name(index);
2368   return mem_name;
2369 }
2370 
2371 // -----------------------------------------------------------------------------------------------------
2372 #ifndef PRODUCT
2373 
2374 // Printing
2375 
2376 #define BULLET  " - "
2377 
2378 void FieldPrinter::do_field(fieldDescriptor* fd) {
2379   _st->print(BULLET);
2380    if (_obj == NULL) {
2381      fd->print_on(_st);
2382      _st->cr();
2383    } else {
2384      fd->print_on_for(_st, _obj);
2385      _st->cr();
2386    }
2387 }
2388 




2327       } else {
2328         if (best == NULL || (osr->comp_level() > best->comp_level())) {
2329           if (osr->comp_level() == CompLevel_highest_tier) {
2330             // Found the best possible - return it.
2331             OsrList_lock->unlock();
2332             return osr;
2333           }
2334           best = osr;
2335         }
2336       }
2337     }
2338     osr = osr->osr_link();
2339   }
2340   OsrList_lock->unlock();
2341   if (best != NULL && best->comp_level() >= comp_level && match_level == false) {
2342     return best;
2343   }
2344   return NULL;
2345 }
2346 
2347 bool instanceKlass::add_member_name(Handle mem_name) {
2348   jweak mem_name_wref = JNIHandles::make_weak_global(mem_name);
2349   MutexLocker ml(MemberNameTable_lock);

2350   DEBUG_ONLY(No_Safepoint_Verifier nsv);
2351 
2352   // Check if method has been redefined while taking out MemberNameTable_lock, if so
2353   // return false.  We cannot cache obsolete methods. They will crash when the function
2354   // is called!
2355   methodOop method = (methodOop) java_lang_invoke_MemberName::vmtarget(mem_name());
2356   if (method->is_obsolete()) {
2357     return false;
2358   } else if (method->is_old()) {
2359     // Replace method with redefined version
2360     java_lang_invoke_MemberName::set_vmtarget(mem_name(), method_with_idnum(method->method_idnum()));
2361   }


2362 





2363   if (_member_names == NULL) {
2364     _member_names = new (ResourceObj::C_HEAP, mtClass) MemberNameTable(idnum_allocated_count());
2365   }
2366   _member_names->add_member_name(mem_name_wref);
2367   return true;
2368 }
2369 
2370 // -----------------------------------------------------------------------------------------------------
2371 #ifndef PRODUCT
2372 
2373 // Printing
2374 
2375 #define BULLET  " - "
2376 
2377 void FieldPrinter::do_field(fieldDescriptor* fd) {
2378   _st->print(BULLET);
2379    if (_obj == NULL) {
2380      fd->print_on(_st);
2381      _st->cr();
2382    } else {
2383      fd->print_on_for(_st, _obj);
2384      _st->cr();
2385    }
2386 }
2387