5228
5229 // This is the point where the entire marking should have completed.
5230 verify_work_stacks_empty();
5231
5232 {
5233 GCTraceTime(Debug, gc, phases) t("Weak Processing", _gc_timer_cm);
5234 WeakProcessor::weak_oops_do(&_is_alive_closure, &do_nothing_cl);
5235 }
5236
5237 if (should_unload_classes()) {
5238 {
5239 GCTraceTime(Debug, gc, phases) t("Class Unloading", _gc_timer_cm);
5240
5241 // Unload classes and purge the SystemDictionary.
5242 bool purged_class = SystemDictionary::do_unloading(&_is_alive_closure, _gc_timer_cm);
5243
5244 // Unload nmethods.
5245 CodeCache::do_unloading(&_is_alive_closure, purged_class);
5246
5247 // Prune dead klasses from subklass/sibling/implementor lists.
5248 Klass::clean_weak_klass_links();
5249 }
5250
5251 {
5252 GCTraceTime(Debug, gc, phases) t("Scrub Symbol Table", _gc_timer_cm);
5253 // Clean up unreferenced symbols in symbol table.
5254 SymbolTable::unlink();
5255 }
5256
5257 {
5258 GCTraceTime(Debug, gc, phases) t("Scrub String Table", _gc_timer_cm);
5259 // Delete entries for dead interned strings.
5260 StringTable::unlink(&_is_alive_closure);
5261 }
5262 }
5263
5264 // Restore any preserved marks as a result of mark stack or
5265 // work queue overflow
5266 restore_preserved_marks_if_any(); // done single-threaded for now
5267
5268 rp->set_enqueuing_is_done(true);
|
5228
5229 // This is the point where the entire marking should have completed.
5230 verify_work_stacks_empty();
5231
5232 {
5233 GCTraceTime(Debug, gc, phases) t("Weak Processing", _gc_timer_cm);
5234 WeakProcessor::weak_oops_do(&_is_alive_closure, &do_nothing_cl);
5235 }
5236
5237 if (should_unload_classes()) {
5238 {
5239 GCTraceTime(Debug, gc, phases) t("Class Unloading", _gc_timer_cm);
5240
5241 // Unload classes and purge the SystemDictionary.
5242 bool purged_class = SystemDictionary::do_unloading(&_is_alive_closure, _gc_timer_cm);
5243
5244 // Unload nmethods.
5245 CodeCache::do_unloading(&_is_alive_closure, purged_class);
5246
5247 // Prune dead klasses from subklass/sibling/implementor lists.
5248 Klass::clean_weak_klass_links(purged_class);
5249 }
5250
5251 {
5252 GCTraceTime(Debug, gc, phases) t("Scrub Symbol Table", _gc_timer_cm);
5253 // Clean up unreferenced symbols in symbol table.
5254 SymbolTable::unlink();
5255 }
5256
5257 {
5258 GCTraceTime(Debug, gc, phases) t("Scrub String Table", _gc_timer_cm);
5259 // Delete entries for dead interned strings.
5260 StringTable::unlink(&_is_alive_closure);
5261 }
5262 }
5263
5264 // Restore any preserved marks as a result of mark stack or
5265 // work queue overflow
5266 restore_preserved_marks_if_any(); // done single-threaded for now
5267
5268 rp->set_enqueuing_is_done(true);
|