< prev index next >

src/share/vm/memory/universe.cpp

Print this page




 480 
 481   GrowableArray <Klass*>* list = java_lang_Class::fixup_mirror_list();
 482   int list_length = list->length();
 483   for (int i = 0; i < list_length; i++) {
 484     Klass* k = list->at(i);
 485     assert(k->is_klass(), "List should only hold classes");
 486     EXCEPTION_MARK;
 487     KlassHandle kh(THREAD, k);
 488     java_lang_Class::fixup_mirror(kh, CATCH);
 489 }
 490   delete java_lang_Class::fixup_mirror_list();
 491   java_lang_Class::set_fixup_mirror_list(NULL);
 492 }
 493 
 494 #define assert_pll_locked(test) \
 495   assert(Heap_lock->test(), "Reference pending list access requires lock")
 496 
 497 #define assert_pll_ownership() assert_pll_locked(owned_by_self)
 498 
 499 oop Universe::reference_pending_list() {



 500   assert_pll_ownership();

 501   return _reference_pending_list;
 502 }
 503 
 504 void Universe::set_reference_pending_list(oop list) {
 505   assert_pll_ownership();
 506   _reference_pending_list = list;
 507 }
 508 
 509 bool Universe::has_reference_pending_list() {
 510   assert_pll_ownership();
 511   return _reference_pending_list != NULL;
 512 }
 513 
 514 oop Universe::swap_reference_pending_list(oop list) {
 515   assert_pll_locked(is_locked);
 516   return (oop)Atomic::xchg_ptr(list, &_reference_pending_list);
 517 }
 518 
 519 #undef assert_pll_locked
 520 #undef assert_pll_ownership




 480 
 481   GrowableArray <Klass*>* list = java_lang_Class::fixup_mirror_list();
 482   int list_length = list->length();
 483   for (int i = 0; i < list_length; i++) {
 484     Klass* k = list->at(i);
 485     assert(k->is_klass(), "List should only hold classes");
 486     EXCEPTION_MARK;
 487     KlassHandle kh(THREAD, k);
 488     java_lang_Class::fixup_mirror(kh, CATCH);
 489 }
 490   delete java_lang_Class::fixup_mirror_list();
 491   java_lang_Class::set_fixup_mirror_list(NULL);
 492 }
 493 
 494 #define assert_pll_locked(test) \
 495   assert(Heap_lock->test(), "Reference pending list access requires lock")
 496 
 497 #define assert_pll_ownership() assert_pll_locked(owned_by_self)
 498 
 499 oop Universe::reference_pending_list() {
 500   if (Thread::current()->is_VM_thread()) {
 501     assert_pll_locked(is_locked);
 502   } else {
 503     assert_pll_ownership();
 504   }
 505   return _reference_pending_list;
 506 }
 507 
 508 void Universe::set_reference_pending_list(oop list) {
 509   assert_pll_ownership();
 510   _reference_pending_list = list;
 511 }
 512 
 513 bool Universe::has_reference_pending_list() {
 514   assert_pll_ownership();
 515   return _reference_pending_list != NULL;
 516 }
 517 
 518 oop Universe::swap_reference_pending_list(oop list) {
 519   assert_pll_locked(is_locked);
 520   return (oop)Atomic::xchg_ptr(list, &_reference_pending_list);
 521 }
 522 
 523 #undef assert_pll_locked
 524 #undef assert_pll_ownership


< prev index next >