hotspot/src/share/vm/gc/cms/concurrentMarkSweepGeneration.cpp
changeset 46505 fd4bc78630b1
parent 43605 07baf498d588
child 46618 d503911aa948
equal deleted inserted replaced
46504:38048d4d20e7 46505:fd4bc78630b1
  5230   if (should_unload_classes()) {
  5230   if (should_unload_classes()) {
  5231     {
  5231     {
  5232       GCTraceTime(Debug, gc, phases) t("Class Unloading", _gc_timer_cm);
  5232       GCTraceTime(Debug, gc, phases) t("Class Unloading", _gc_timer_cm);
  5233 
  5233 
  5234       // Unload classes and purge the SystemDictionary.
  5234       // Unload classes and purge the SystemDictionary.
  5235       bool purged_class = SystemDictionary::do_unloading(&_is_alive_closure);
  5235       bool purged_class = SystemDictionary::do_unloading(&_is_alive_closure, _gc_timer_cm);
  5236 
  5236 
  5237       // Unload nmethods.
  5237       // Unload nmethods.
  5238       CodeCache::do_unloading(&_is_alive_closure, purged_class);
  5238       CodeCache::do_unloading(&_is_alive_closure, purged_class);
  5239 
  5239 
  5240       // Prune dead klasses from subklass/sibling/implementor lists.
  5240       // Prune dead klasses from subklass/sibling/implementor lists.
  5251       GCTraceTime(Debug, gc, phases) t("Scrub String Table", _gc_timer_cm);
  5251       GCTraceTime(Debug, gc, phases) t("Scrub String Table", _gc_timer_cm);
  5252       // Delete entries for dead interned strings.
  5252       // Delete entries for dead interned strings.
  5253       StringTable::unlink(&_is_alive_closure);
  5253       StringTable::unlink(&_is_alive_closure);
  5254     }
  5254     }
  5255   }
  5255   }
  5256 
       
  5257 
  5256 
  5258   // Restore any preserved marks as a result of mark stack or
  5257   // Restore any preserved marks as a result of mark stack or
  5259   // work queue overflow
  5258   // work queue overflow
  5260   restore_preserved_marks_if_any();  // done single-threaded for now
  5259   restore_preserved_marks_if_any();  // done single-threaded for now
  5261 
  5260