644 "save marks have not been newly set.");
645
646 {
647 // DefNew needs to run with n_threads == 0, to make sure the serial
648 // version of the card table scanning code is used.
649 // See: CardTableModRefBSForCTRS::non_clean_card_iterate_possibly_parallel.
650 StrongRootsScope srs(0);
651
652 gch->young_process_roots(&srs,
653 &fsc_with_no_gc_barrier,
654 &fsc_with_gc_barrier,
655 &cld_scan_closure);
656 }
657
658 // "evacuate followers".
659 evacuate_followers.do_void();
660
661 FastKeepAliveClosure keep_alive(this, &scan_weak_ref);
662 ReferenceProcessor* rp = ref_processor();
663 rp->setup_policy(clear_all_soft_refs);
664 ReferenceProcessorPhaseTimes pt(_gc_timer, rp->num_q(), rp->processing_is_mt());
665 const ReferenceProcessorStats& stats =
666 rp->process_discovered_references(&is_alive, &keep_alive, &evacuate_followers,
667 NULL, &pt);
668 gc_tracer.report_gc_reference_stats(stats);
669 gc_tracer.report_tenuring_threshold(tenuring_threshold());
670 pt.print_all_references();
671
672 if (!_promotion_failed) {
673 // Swap the survivor spaces.
674 eden()->clear(SpaceDecorator::Mangle);
675 from()->clear(SpaceDecorator::Mangle);
676 if (ZapUnusedHeapArea) {
677 // This is now done here because of the piece-meal mangling which
678 // can check for valid mangling at intermediate points in the
679 // collection(s). When a young collection fails to collect
680 // sufficient space resizing of the young generation can occur
681 // an redistribute the spaces in the young generation. Mangle
682 // here so that unzapped regions don't get distributed to
683 // other spaces.
684 to()->mangle_unused_area();
|
644 "save marks have not been newly set.");
645
646 {
647 // DefNew needs to run with n_threads == 0, to make sure the serial
648 // version of the card table scanning code is used.
649 // See: CardTableModRefBSForCTRS::non_clean_card_iterate_possibly_parallel.
650 StrongRootsScope srs(0);
651
652 gch->young_process_roots(&srs,
653 &fsc_with_no_gc_barrier,
654 &fsc_with_gc_barrier,
655 &cld_scan_closure);
656 }
657
658 // "evacuate followers".
659 evacuate_followers.do_void();
660
661 FastKeepAliveClosure keep_alive(this, &scan_weak_ref);
662 ReferenceProcessor* rp = ref_processor();
663 rp->setup_policy(clear_all_soft_refs);
664 ReferenceProcessorPhaseTimes pt(_gc_timer, rp->num_q());
665 const ReferenceProcessorStats& stats =
666 rp->process_discovered_references(&is_alive, &keep_alive, &evacuate_followers,
667 NULL, &pt);
668 gc_tracer.report_gc_reference_stats(stats);
669 gc_tracer.report_tenuring_threshold(tenuring_threshold());
670 pt.print_all_references();
671
672 if (!_promotion_failed) {
673 // Swap the survivor spaces.
674 eden()->clear(SpaceDecorator::Mangle);
675 from()->clear(SpaceDecorator::Mangle);
676 if (ZapUnusedHeapArea) {
677 // This is now done here because of the piece-meal mangling which
678 // can check for valid mangling at intermediate points in the
679 // collection(s). When a young collection fails to collect
680 // sufficient space resizing of the young generation can occur
681 // an redistribute the spaces in the young generation. Mangle
682 // here so that unzapped regions don't get distributed to
683 // other spaces.
684 to()->mangle_unused_area();
|