< prev index next >

src/share/vm/gc/serial/defNewGeneration.cpp

Print this page
rev 13331 : imported patch webrev.3b
rev 13332 : [mq]: webrev.4


 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();


< prev index next >