< prev index next >

src/share/vm/gc/g1/g1RemSet.cpp

Print this page
rev 13238 : [mq]: 8183226-eridk-sjohanss-review


 766   if (scan_limit <= card_start) {
 767     // If the card starts above the area in the region containing objects to scan, skip it.
 768     return false;
 769   }
 770 
 771   // Don't use addr_for(card_ptr + 1) which can ask for
 772   // a card beyond the heap.
 773   HeapWord* card_end = card_start + CardTableModRefBS::card_size_in_words;
 774   MemRegion dirty_region(card_start, MIN2(scan_limit, card_end));
 775   assert(!dirty_region.is_empty(), "sanity");
 776 
 777   update_rs_cl->set_region(r);
 778   update_rs_cl->reset_has_refs_into_cset();
 779 
 780   bool card_processed = r->oops_on_card_seq_iterate_careful<true>(dirty_region, update_rs_cl);
 781   assert(card_processed, "must be");
 782 
 783   return update_rs_cl->has_refs_into_cset();
 784 }
 785 
 786 void G1RemSet::initialize_periodic_summary_info() {
 787   if (log_is_enabled(Trace, gc, remset)) {
 788     _prev_period_summary.initialize(this);
 789   }
 790 }
 791 
 792 void G1RemSet::print_periodic_summary_info(const char* header, uint period_count) {
 793   if ((G1SummarizeRSetStatsPeriod > 0) && log_is_enabled(Trace, gc, remset) &&
 794       (period_count % G1SummarizeRSetStatsPeriod == 0)) {
 795 
 796     assert(_prev_period_summary.initialized(), "Periodic remembered set summary must be initialized.");
 797 
 798     G1RemSetSummary current;
 799     current.initialize(this);
 800     _prev_period_summary.subtract_from(&current);
 801 
 802     Log(gc, remset) log;
 803     log.trace("%s", header);
 804     ResourceMark rm;
 805     _prev_period_summary.print_on(log.trace_stream());
 806 
 807     _prev_period_summary.set(&current);
 808   }
 809 }
 810 
 811 void G1RemSet::print_summary_info() {
 812   Log(gc, remset, exit) log;
 813   if (log.is_trace()) {
 814     log.trace(" Cumulative RS summary");
 815     G1RemSetSummary current;
 816     current.initialize(this);
 817     ResourceMark rm;
 818     current.print_on(log.trace_stream());
 819   }
 820 }
 821 
 822 void G1RemSet::create_card_live_data(WorkGang* workers, G1CMBitMap* mark_bitmap) {
 823   _card_live_data.create(workers, mark_bitmap);
 824 }
 825 
 826 void G1RemSet::finalize_card_live_data(WorkGang* workers, G1CMBitMap* mark_bitmap) {
 827   _card_live_data.finalize(workers, mark_bitmap);
 828 }
 829 
 830 void G1RemSet::verify_card_live_data(WorkGang* workers, G1CMBitMap* bitmap) {
 831   _card_live_data.verify(workers, bitmap);
 832 }
 833 
 834 void G1RemSet::clear_card_live_data(WorkGang* workers) {
 835   _card_live_data.clear(workers);
 836 }


 766   if (scan_limit <= card_start) {
 767     // If the card starts above the area in the region containing objects to scan, skip it.
 768     return false;
 769   }
 770 
 771   // Don't use addr_for(card_ptr + 1) which can ask for
 772   // a card beyond the heap.
 773   HeapWord* card_end = card_start + CardTableModRefBS::card_size_in_words;
 774   MemRegion dirty_region(card_start, MIN2(scan_limit, card_end));
 775   assert(!dirty_region.is_empty(), "sanity");
 776 
 777   update_rs_cl->set_region(r);
 778   update_rs_cl->reset_has_refs_into_cset();
 779 
 780   bool card_processed = r->oops_on_card_seq_iterate_careful<true>(dirty_region, update_rs_cl);
 781   assert(card_processed, "must be");
 782 
 783   return update_rs_cl->has_refs_into_cset();
 784 }
 785 






 786 void G1RemSet::print_periodic_summary_info(const char* header, uint period_count) {
 787   if ((G1SummarizeRSetStatsPeriod > 0) && log_is_enabled(Trace, gc, remset) &&
 788       (period_count % G1SummarizeRSetStatsPeriod == 0)) {
 789 


 790     G1RemSetSummary current;

 791     _prev_period_summary.subtract_from(&current);
 792 
 793     Log(gc, remset) log;
 794     log.trace("%s", header);
 795     ResourceMark rm;
 796     _prev_period_summary.print_on(log.trace_stream());
 797 
 798     _prev_period_summary.set(&current);
 799   }
 800 }
 801 
 802 void G1RemSet::print_summary_info() {
 803   Log(gc, remset, exit) log;
 804   if (log.is_trace()) {
 805     log.trace(" Cumulative RS summary");
 806     G1RemSetSummary current;

 807     ResourceMark rm;
 808     current.print_on(log.trace_stream());
 809   }
 810 }
 811 
 812 void G1RemSet::create_card_live_data(WorkGang* workers, G1CMBitMap* mark_bitmap) {
 813   _card_live_data.create(workers, mark_bitmap);
 814 }
 815 
 816 void G1RemSet::finalize_card_live_data(WorkGang* workers, G1CMBitMap* mark_bitmap) {
 817   _card_live_data.finalize(workers, mark_bitmap);
 818 }
 819 
 820 void G1RemSet::verify_card_live_data(WorkGang* workers, G1CMBitMap* bitmap) {
 821   _card_live_data.verify(workers, bitmap);
 822 }
 823 
 824 void G1RemSet::clear_card_live_data(WorkGang* workers) {
 825   _card_live_data.clear(workers);
 826 }
< prev index next >