comparison src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp @ 4837:eff609af17d7

7127706: G1: re-enable survivors during the initial-mark pause Summary: Re-enable survivors during the initial-mark pause. Afterwards, the concurrent marking threads have to scan them and mark everything reachable from them. The next GC will have to wait for the survivors to be scanned. Reviewed-by: brutisso, johnc
author tonyp
date Wed, 25 Jan 2012 12:58:23 -0500
parents 6a78aa6ac1ff
children a9647476d1a4
comparison
equal deleted inserted replaced
4836:d30fa85f9994 4837:eff609af17d7
63 virtual MainBodySummary* main_body_summary() { return NULL; } 63 virtual MainBodySummary* main_body_summary() { return NULL; }
64 }; 64 };
65 65
66 class MainBodySummary: public CHeapObj { 66 class MainBodySummary: public CHeapObj {
67 define_num_seq(satb_drain) // optional 67 define_num_seq(satb_drain) // optional
68 define_num_seq(root_region_scan_wait)
68 define_num_seq(parallel) // parallel only 69 define_num_seq(parallel) // parallel only
69 define_num_seq(ext_root_scan) 70 define_num_seq(ext_root_scan)
70 define_num_seq(satb_filtering) 71 define_num_seq(satb_filtering)
71 define_num_seq(update_rs) 72 define_num_seq(update_rs)
72 define_num_seq(scan_rs) 73 define_num_seq(scan_rs)
713 // determine whether we should initiate a new marking. 714 // determine whether we should initiate a new marking.
714 double _cur_mark_stop_world_time_ms; 715 double _cur_mark_stop_world_time_ms;
715 double _mark_remark_start_sec; 716 double _mark_remark_start_sec;
716 double _mark_cleanup_start_sec; 717 double _mark_cleanup_start_sec;
717 double _mark_closure_time_ms; 718 double _mark_closure_time_ms;
719 double _root_region_scan_wait_time_ms;
718 720
719 // Update the young list target length either by setting it to the 721 // Update the young list target length either by setting it to the
720 // desired fixed value or by calculating it using G1's pause 722 // desired fixed value or by calculating it using G1's pause
721 // prediction model. If no rs_lengths parameter is passed, predict 723 // prediction model. If no rs_lengths parameter is passed, predict
722 // the RS lengths using the prediction model, otherwise use the 724 // the RS lengths using the prediction model, otherwise use the
815 817
816 void record_mark_closure_time(double mark_closure_time_ms) { 818 void record_mark_closure_time(double mark_closure_time_ms) {
817 _mark_closure_time_ms = mark_closure_time_ms; 819 _mark_closure_time_ms = mark_closure_time_ms;
818 } 820 }
819 821
822 void record_root_region_scan_wait_time(double time_ms) {
823 _root_region_scan_wait_time_ms = time_ms;
824 }
825
820 void record_concurrent_mark_remark_start(); 826 void record_concurrent_mark_remark_start();
821 void record_concurrent_mark_remark_end(); 827 void record_concurrent_mark_remark_end();
822 828
823 void record_concurrent_mark_cleanup_start(); 829 void record_concurrent_mark_cleanup_start();
824 void record_concurrent_mark_cleanup_end(int no_of_gc_threads); 830 void record_concurrent_mark_cleanup_end(int no_of_gc_threads);
1145 1151
1146 void note_stop_adding_survivor_regions() { 1152 void note_stop_adding_survivor_regions() {
1147 _survivor_surv_rate_group->stop_adding_regions(); 1153 _survivor_surv_rate_group->stop_adding_regions();
1148 } 1154 }
1149 1155
1150 void tenure_all_objects() {
1151 _max_survivor_regions = 0;
1152 _tenuring_threshold = 0;
1153 }
1154
1155 void record_survivor_regions(size_t regions, 1156 void record_survivor_regions(size_t regions,
1156 HeapRegion* head, 1157 HeapRegion* head,
1157 HeapRegion* tail) { 1158 HeapRegion* tail) {
1158 _recorded_survivor_regions = regions; 1159 _recorded_survivor_regions = regions;
1159 _recorded_survivor_head = head; 1160 _recorded_survivor_head = head;