518 //CodeCache::scavenge_root_nmethods_do(CodeBlobToOopClosure(mark_and_push_closure()));
519 }
520
521 // Flush marking stack.
522 follow_stack();
523
524 // Process reference objects found during marking
525 {
526 GCTraceTime(Debug, gc, phases) t("Reference Processing", _gc_timer);
527
528 ref_processor()->setup_policy(clear_all_softrefs);
529 const ReferenceProcessorStats& stats =
530 ref_processor()->process_discovered_references(
531 is_alive_closure(), mark_and_push_closure(), follow_stack_closure(), NULL, _gc_timer);
532 gc_tracer()->report_gc_reference_stats(stats);
533 }
534
535 // This is the point where the entire marking should have completed.
536 assert(_marking_stack.is_empty(), "Marking should have completed");
537
538 {
539 GCTraceTime(Debug, gc, phases) t("Class Unloading", _gc_timer);
540
541 // Unload classes and purge the SystemDictionary.
542 bool purged_class = SystemDictionary::do_unloading(is_alive_closure());
543
544 // Unload nmethods.
545 CodeCache::do_unloading(is_alive_closure(), purged_class);
546
547 // Prune dead klasses from subklass/sibling/implementor lists.
548 Klass::clean_weak_klass_links(is_alive_closure());
549 }
550
551 {
552 GCTraceTime(Debug, gc, phases) t("Scrub String Table", _gc_timer);
553 // Delete entries for dead interned strings.
554 StringTable::unlink(is_alive_closure());
555 }
556
557 {
558 GCTraceTime(Debug, gc, phases) t("Scrub Symbol Table", _gc_timer);
|
518 //CodeCache::scavenge_root_nmethods_do(CodeBlobToOopClosure(mark_and_push_closure()));
519 }
520
521 // Flush marking stack.
522 follow_stack();
523
524 // Process reference objects found during marking
525 {
526 GCTraceTime(Debug, gc, phases) t("Reference Processing", _gc_timer);
527
528 ref_processor()->setup_policy(clear_all_softrefs);
529 const ReferenceProcessorStats& stats =
530 ref_processor()->process_discovered_references(
531 is_alive_closure(), mark_and_push_closure(), follow_stack_closure(), NULL, _gc_timer);
532 gc_tracer()->report_gc_reference_stats(stats);
533 }
534
535 // This is the point where the entire marking should have completed.
536 assert(_marking_stack.is_empty(), "Marking should have completed");
537
538 if (ClassUnloading) {
539 GCTraceTime(Debug, gc, phases) t("Class Unloading", _gc_timer);
540
541 // Unload classes and purge the SystemDictionary.
542 bool purged_class = SystemDictionary::do_unloading(is_alive_closure());
543
544 // Unload nmethods.
545 CodeCache::do_unloading(is_alive_closure(), purged_class);
546
547 // Prune dead klasses from subklass/sibling/implementor lists.
548 Klass::clean_weak_klass_links(is_alive_closure());
549 }
550
551 {
552 GCTraceTime(Debug, gc, phases) t("Scrub String Table", _gc_timer);
553 // Delete entries for dead interned strings.
554 StringTable::unlink(is_alive_closure());
555 }
556
557 {
558 GCTraceTime(Debug, gc, phases) t("Scrub Symbol Table", _gc_timer);
|