134 double _cur_strong_code_root_purge_time_ms;
135
136 double _cur_evac_fail_recalc_used;
137 double _cur_evac_fail_restore_remsets;
138 double _cur_evac_fail_remove_self_forwards;
139
140 double _cur_string_dedup_fixup_time_ms;
141 WorkerDataArray<double> _cur_string_dedup_queue_fixup_worker_times_ms;
142 WorkerDataArray<double> _cur_string_dedup_table_fixup_worker_times_ms;
143
144 double _cur_clear_ct_time_ms;
145 double _cur_ref_proc_time_ms;
146 double _cur_ref_enq_time_ms;
147
148 double _cur_collection_start_sec;
149 double _root_region_scan_wait_time_ms;
150
151 double _recorded_young_cset_choice_time_ms;
152 double _recorded_non_young_cset_choice_time_ms;
153
154 double _recorded_redirty_logged_cards_time_ms;
155
156 double _recorded_young_free_cset_time_ms;
157 double _recorded_non_young_free_cset_time_ms;
158
159 double _cur_verify_before_time_ms;
160 double _cur_verify_after_time_ms;
161
162 // Helper methods for detailed logging
163 void print_stats(int level, const char* str, double value);
164 void print_stats(int level, const char* str, double value, uint workers);
165
166 public:
167 G1GCPhaseTimes(uint max_gc_threads);
168 void note_gc_start(uint active_gc_threads);
169 void note_gc_end();
170 void print(double pause_time_sec);
171
172 void record_gc_worker_start_time(uint worker_i, double ms) {
173 _last_gc_worker_start_times_ms.set(worker_i, ms);
276 void record_root_region_scan_wait_time(double time_ms) {
277 _root_region_scan_wait_time_ms = time_ms;
278 }
279
280 void record_young_free_cset_time_ms(double time_ms) {
281 _recorded_young_free_cset_time_ms = time_ms;
282 }
283
284 void record_non_young_free_cset_time_ms(double time_ms) {
285 _recorded_non_young_free_cset_time_ms = time_ms;
286 }
287
288 void record_young_cset_choice_time_ms(double time_ms) {
289 _recorded_young_cset_choice_time_ms = time_ms;
290 }
291
292 void record_non_young_cset_choice_time_ms(double time_ms) {
293 _recorded_non_young_cset_choice_time_ms = time_ms;
294 }
295
296 void record_redirty_logged_cards_time_ms(double time_ms) {
297 _recorded_redirty_logged_cards_time_ms = time_ms;
298 }
299
300 void record_cur_collection_start_sec(double time_ms) {
301 _cur_collection_start_sec = time_ms;
302 }
303
304 void record_verify_before_time_ms(double time_ms) {
305 _cur_verify_before_time_ms = time_ms;
306 }
307
308 void record_verify_after_time_ms(double time_ms) {
309 _cur_verify_after_time_ms = time_ms;
310 }
311
312 double accounted_time_ms();
313
314 double cur_collection_start_sec() {
315 return _cur_collection_start_sec;
|
134 double _cur_strong_code_root_purge_time_ms;
135
136 double _cur_evac_fail_recalc_used;
137 double _cur_evac_fail_restore_remsets;
138 double _cur_evac_fail_remove_self_forwards;
139
140 double _cur_string_dedup_fixup_time_ms;
141 WorkerDataArray<double> _cur_string_dedup_queue_fixup_worker_times_ms;
142 WorkerDataArray<double> _cur_string_dedup_table_fixup_worker_times_ms;
143
144 double _cur_clear_ct_time_ms;
145 double _cur_ref_proc_time_ms;
146 double _cur_ref_enq_time_ms;
147
148 double _cur_collection_start_sec;
149 double _root_region_scan_wait_time_ms;
150
151 double _recorded_young_cset_choice_time_ms;
152 double _recorded_non_young_cset_choice_time_ms;
153
154 WorkerDataArray<double> _last_redirty_logged_cards_time_ms;
155 WorkerDataArray<size_t> _last_redirty_logged_cards_processed_cards;
156 double _recorded_redirty_logged_cards_time_ms;
157
158 double _recorded_young_free_cset_time_ms;
159 double _recorded_non_young_free_cset_time_ms;
160
161 double _cur_verify_before_time_ms;
162 double _cur_verify_after_time_ms;
163
164 // Helper methods for detailed logging
165 void print_stats(int level, const char* str, double value);
166 void print_stats(int level, const char* str, double value, uint workers);
167
168 public:
169 G1GCPhaseTimes(uint max_gc_threads);
170 void note_gc_start(uint active_gc_threads);
171 void note_gc_end();
172 void print(double pause_time_sec);
173
174 void record_gc_worker_start_time(uint worker_i, double ms) {
175 _last_gc_worker_start_times_ms.set(worker_i, ms);
278 void record_root_region_scan_wait_time(double time_ms) {
279 _root_region_scan_wait_time_ms = time_ms;
280 }
281
282 void record_young_free_cset_time_ms(double time_ms) {
283 _recorded_young_free_cset_time_ms = time_ms;
284 }
285
286 void record_non_young_free_cset_time_ms(double time_ms) {
287 _recorded_non_young_free_cset_time_ms = time_ms;
288 }
289
290 void record_young_cset_choice_time_ms(double time_ms) {
291 _recorded_young_cset_choice_time_ms = time_ms;
292 }
293
294 void record_non_young_cset_choice_time_ms(double time_ms) {
295 _recorded_non_young_cset_choice_time_ms = time_ms;
296 }
297
298 void record_redirty_logged_cards_time_ms(uint worker_i, double time_ms) {
299 _last_redirty_logged_cards_time_ms.set(worker_i, time_ms);
300 }
301
302 void record_redirty_logged_cards_processed_cards(uint worker_i, size_t processed_buffers) {
303 _last_redirty_logged_cards_processed_cards.set(worker_i, processed_buffers);
304 }
305
306 void record_redirty_logged_cards_time_ms(double time_ms) {
307 _recorded_redirty_logged_cards_time_ms = time_ms;
308 }
309
310 void record_cur_collection_start_sec(double time_ms) {
311 _cur_collection_start_sec = time_ms;
312 }
313
314 void record_verify_before_time_ms(double time_ms) {
315 _cur_verify_before_time_ms = time_ms;
316 }
317
318 void record_verify_after_time_ms(double time_ms) {
319 _cur_verify_after_time_ms = time_ms;
320 }
321
322 double accounted_time_ms();
323
324 double cur_collection_start_sec() {
325 return _cur_collection_start_sec;
|