comparison src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp @ 1705:2d160770d2e5

6814437: G1: remove the _new_refs array Summary: The per-worker _new_refs array is used to hold references that point into the collection set. It is populated during RSet updating and subsequently processed. In the event of an evacuation failure it processed again to recreate the RSets of regions in the collection set. Remove the per-worker _new_refs array by processing the references directly. Use a DirtyCardQueue to hold the cards containing the references so that the RSets of regions in the collection set can be recreated when handling an evacuation failure. Reviewed-by: iveresov, jmasa, tonyp
author johnc
date Mon, 02 Aug 2010 12:51:43 -0700
parents 4e5661ba9d98
children 0ce1569c90e5
comparison
equal deleted inserted replaced
1704:63f4675ac87d 1705:2d160770d2e5
61 define_num_seq(parallel) // parallel only 61 define_num_seq(parallel) // parallel only
62 define_num_seq(ext_root_scan) 62 define_num_seq(ext_root_scan)
63 define_num_seq(mark_stack_scan) 63 define_num_seq(mark_stack_scan)
64 define_num_seq(update_rs) 64 define_num_seq(update_rs)
65 define_num_seq(scan_rs) 65 define_num_seq(scan_rs)
66 define_num_seq(scan_new_refs) // Only for temp use; added to
67 // in parallel case.
68 define_num_seq(obj_copy) 66 define_num_seq(obj_copy)
69 define_num_seq(termination) // parallel only 67 define_num_seq(termination) // parallel only
70 define_num_seq(parallel_other) // parallel only 68 define_num_seq(parallel_other) // parallel only
71 define_num_seq(mark_closure) 69 define_num_seq(mark_closure)
72 define_num_seq(clear_ct) // parallel only 70 define_num_seq(clear_ct) // parallel only
175 double* _par_last_ext_root_scan_times_ms; 173 double* _par_last_ext_root_scan_times_ms;
176 double* _par_last_mark_stack_scan_times_ms; 174 double* _par_last_mark_stack_scan_times_ms;
177 double* _par_last_update_rs_times_ms; 175 double* _par_last_update_rs_times_ms;
178 double* _par_last_update_rs_processed_buffers; 176 double* _par_last_update_rs_processed_buffers;
179 double* _par_last_scan_rs_times_ms; 177 double* _par_last_scan_rs_times_ms;
180 double* _par_last_scan_new_refs_times_ms;
181 double* _par_last_obj_copy_times_ms; 178 double* _par_last_obj_copy_times_ms;
182 double* _par_last_termination_times_ms; 179 double* _par_last_termination_times_ms;
183 double* _par_last_termination_attempts; 180 double* _par_last_termination_attempts;
184 double* _par_last_gc_worker_end_times_ms; 181 double* _par_last_gc_worker_end_times_ms;
185 182
929 _par_last_update_rs_processed_buffers[thread] = processed_buffers; 926 _par_last_update_rs_processed_buffers[thread] = processed_buffers;
930 } 927 }
931 928
932 void record_scan_rs_time(int thread, double ms) { 929 void record_scan_rs_time(int thread, double ms) {
933 _par_last_scan_rs_times_ms[thread] = ms; 930 _par_last_scan_rs_times_ms[thread] = ms;
934 }
935
936 void record_scan_new_refs_time(int thread, double ms) {
937 _par_last_scan_new_refs_times_ms[thread] = ms;
938 }
939
940 double get_scan_new_refs_time(int thread) {
941 return _par_last_scan_new_refs_times_ms[thread];
942 } 931 }
943 932
944 void reset_obj_copy_time(int thread) { 933 void reset_obj_copy_time(int thread) {
945 _par_last_obj_copy_times_ms[thread] = 0.0; 934 _par_last_obj_copy_times_ms[thread] = 0.0;
946 } 935 }