Mercurial > hg > truffle
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; |