equal
deleted
inserted
replaced
76 StringDedupQueueFixup, |
76 StringDedupQueueFixup, |
77 StringDedupTableFixup, |
77 StringDedupTableFixup, |
78 RedirtyCards, |
78 RedirtyCards, |
79 YoungFreeCSet, |
79 YoungFreeCSet, |
80 NonYoungFreeCSet, |
80 NonYoungFreeCSet, |
|
81 MergePSS, |
81 GCParPhasesSentinel |
82 GCParPhasesSentinel |
82 }; |
83 }; |
83 |
84 |
84 static const GCParPhases ExtRootScanSubPhasesFirst = ThreadRoots; |
85 static const GCParPhases ExtRootScanSubPhasesFirst = ThreadRoots; |
85 static const GCParPhases ExtRootScanSubPhasesLast = CMRefRoots; |
86 static const GCParPhases ExtRootScanSubPhasesLast = CMRefRoots; |
106 enum GCMergeLBWorkItems { |
107 enum GCMergeLBWorkItems { |
107 MergeLBDirtyCards, |
108 MergeLBDirtyCards, |
108 MergeLBSkippedCards |
109 MergeLBSkippedCards |
109 }; |
110 }; |
110 |
111 |
111 enum GCObjCopyWorkItems { |
112 enum GCMergePSSWorkItems { |
112 ObjCopyLABWaste, |
113 MergePSSCopiedBytes, |
113 ObjCopyLABUndoWaste |
114 MergePSSLABWasteBytes, |
|
115 MergePSSLABUndoWasteBytes |
114 }; |
116 }; |
115 |
117 |
116 private: |
118 private: |
117 // Markers for grouping the phases in the GCPhases enum above |
119 // Markers for grouping the phases in the GCPhases enum above |
118 static const int GCMainParPhasesLast = GCWorkerEnd; |
120 static const int GCMainParPhasesLast = GCWorkerEnd; |
141 WorkerDataArray<size_t>* _opt_scan_hr_scanned_blocks; |
143 WorkerDataArray<size_t>* _opt_scan_hr_scanned_blocks; |
142 WorkerDataArray<size_t>* _opt_scan_hr_claimed_chunks; |
144 WorkerDataArray<size_t>* _opt_scan_hr_claimed_chunks; |
143 WorkerDataArray<size_t>* _opt_scan_hr_scanned_opt_refs; |
145 WorkerDataArray<size_t>* _opt_scan_hr_scanned_opt_refs; |
144 WorkerDataArray<size_t>* _opt_scan_hr_used_memory; |
146 WorkerDataArray<size_t>* _opt_scan_hr_used_memory; |
145 |
147 |
146 WorkerDataArray<size_t>* _obj_copy_lab_waste; |
148 WorkerDataArray<size_t>* _merge_pss_copied_bytes; |
147 WorkerDataArray<size_t>* _obj_copy_lab_undo_waste; |
149 WorkerDataArray<size_t>* _merge_pss_lab_waste_bytes; |
148 |
150 WorkerDataArray<size_t>* _merge_pss_lab_undo_waste_bytes; |
149 WorkerDataArray<size_t>* _opt_obj_copy_lab_waste; |
|
150 WorkerDataArray<size_t>* _opt_obj_copy_lab_undo_waste; |
|
151 |
151 |
152 WorkerDataArray<size_t>* _termination_attempts; |
152 WorkerDataArray<size_t>* _termination_attempts; |
153 |
153 |
154 WorkerDataArray<size_t>* _opt_termination_attempts; |
154 WorkerDataArray<size_t>* _opt_termination_attempts; |
155 |
155 |
222 void reset(); |
222 void reset(); |
223 |
223 |
224 template <class T> |
224 template <class T> |
225 void details(T* phase, const char* indent) const; |
225 void details(T* phase, const char* indent) const; |
226 |
226 |
|
227 void log_work_items(WorkerDataArray<double>* phase, uint indent, outputStream* out) const; |
227 void log_phase(WorkerDataArray<double>* phase, uint indent, outputStream* out, bool print_sum) const; |
228 void log_phase(WorkerDataArray<double>* phase, uint indent, outputStream* out, bool print_sum) const; |
|
229 void debug_serial_phase(WorkerDataArray<double>* phase, uint extra_indent = 0) const; |
228 void debug_phase(WorkerDataArray<double>* phase, uint extra_indent = 0) const; |
230 void debug_phase(WorkerDataArray<double>* phase, uint extra_indent = 0) const; |
229 void trace_phase(WorkerDataArray<double>* phase, bool print_sum = true) const; |
231 void trace_phase(WorkerDataArray<double>* phase, bool print_sum = true) const; |
230 |
232 |
231 void info_time(const char* name, double value) const; |
233 void info_time(const char* name, double value) const; |
232 void debug_time(const char* name, double value) const; |
234 void debug_time(const char* name, double value) const; |
267 // return the average time for a phase in milliseconds |
269 // return the average time for a phase in milliseconds |
268 double average_time_ms(GCParPhases phase); |
270 double average_time_ms(GCParPhases phase); |
269 |
271 |
270 size_t sum_thread_work_items(GCParPhases phase, uint index = 0); |
272 size_t sum_thread_work_items(GCParPhases phase, uint index = 0); |
271 |
273 |
272 public: |
|
273 |
|
274 void record_prepare_tlab_time_ms(double ms) { |
274 void record_prepare_tlab_time_ms(double ms) { |
275 _cur_prepare_tlab_time_ms = ms; |
275 _cur_prepare_tlab_time_ms = ms; |
276 } |
276 } |
277 |
277 |
278 void record_resize_tlab_time_ms(double ms) { |
278 void record_resize_tlab_time_ms(double ms) { |
374 _recorded_redirty_logged_cards_time_ms = time_ms; |
374 _recorded_redirty_logged_cards_time_ms = time_ms; |
375 } |
375 } |
376 |
376 |
377 void record_preserve_cm_referents_time_ms(double time_ms) { |
377 void record_preserve_cm_referents_time_ms(double time_ms) { |
378 _recorded_preserve_cm_referents_time_ms = time_ms; |
378 _recorded_preserve_cm_referents_time_ms = time_ms; |
379 } |
|
380 |
|
381 void record_merge_pss_time_ms(double time_ms) { |
|
382 _recorded_merge_pss_time_ms = time_ms; |
|
383 } |
379 } |
384 |
380 |
385 void record_start_new_cset_time_ms(double time_ms) { |
381 void record_start_new_cset_time_ms(double time_ms) { |
386 _recorded_start_new_cset_time_ms = time_ms; |
382 _recorded_start_new_cset_time_ms = time_ms; |
387 } |
383 } |