hotspot/src/share/vm/memory/referenceProcessor.cpp
changeset 29807 c6217428f47f
parent 29800 fa5f7a2bf717
child 30558 baec90a2699f
child 29872 f7c7fb04a0d7
equal deleted inserted replaced
29806:64aa40385bdd 29807:c6217428f47f
   674                                    OopClosure*        keep_alive,
   674                                    OopClosure*        keep_alive,
   675                                    VoidClosure*       complete_gc) {
   675                                    VoidClosure*       complete_gc) {
   676   ResourceMark rm;
   676   ResourceMark rm;
   677   DiscoveredListIterator iter(refs_list, keep_alive, is_alive);
   677   DiscoveredListIterator iter(refs_list, keep_alive, is_alive);
   678   while (iter.has_next()) {
   678   while (iter.has_next()) {
   679     iter.update_discovered();
       
   680     iter.load_ptrs(DEBUG_ONLY(false /* allow_null_referent */));
   679     iter.load_ptrs(DEBUG_ONLY(false /* allow_null_referent */));
   681     if (clear_referent) {
   680     if (clear_referent) {
   682       // NULL out referent pointer
   681       // NULL out referent pointer
   683       iter.clear_referent();
   682       iter.clear_referent();
   684     } else {
   683     } else {
   691                              p2i(iter.obj()), iter.obj()->klass()->internal_name());
   690                              p2i(iter.obj()), iter.obj()->klass()->internal_name());
   692     }
   691     }
   693     assert(iter.obj()->is_oop(UseConcMarkSweepGC), "Adding a bad reference");
   692     assert(iter.obj()->is_oop(UseConcMarkSweepGC), "Adding a bad reference");
   694     iter.next();
   693     iter.next();
   695   }
   694   }
   696   // Remember to update the next pointer of the last ref.
       
   697   iter.update_discovered();
       
   698   // Close the reachable set
   695   // Close the reachable set
   699   complete_gc->do_void();
   696   complete_gc->do_void();
   700 }
   697 }
   701 
   698 
   702 void
   699 void