71 Termination,
72 OptTermination,
73 Other,
74 GCWorkerTotal,
75 GCWorkerEnd,
76 StringDedupQueueFixup,
77 StringDedupTableFixup,
78 RedirtyCards,
79 YoungFreeCSet,
80 NonYoungFreeCSet,
81 MergePSS,
82 GCParPhasesSentinel
83 };
84
85 static const GCParPhases ExtRootScanSubPhasesFirst = ThreadRoots;
86 static const GCParPhases ExtRootScanSubPhasesLast = CMRefRoots;
87
88 enum GCMergeRSWorkTimes {
89 MergeRSMergedSparse,
90 MergeRSMergedFine,
91 MergeRSMergedCoarse
92 };
93
94 enum GCScanHRWorkItems {
95 ScanHRScannedCards,
96 ScanHRScannedBlocks,
97 ScanHRClaimedChunks,
98 ScanHRScannedOptRefs,
99 ScanHRUsedMemory
100 };
101
102 enum GCMergeHCCWorkItems {
103 MergeHCCDirtyCards,
104 MergeHCCSkippedCards
105 };
106
107 enum GCMergeLBWorkItems {
108 MergeLBDirtyCards,
109 MergeLBSkippedCards
110 };
111
112 enum GCMergePSSWorkItems {
113 MergePSSCopiedBytes,
114 MergePSSLABWasteBytes,
115 MergePSSLABUndoWasteBytes
116 };
117
118 private:
119 // Markers for grouping the phases in the GCPhases enum above
120 static const int GCMainParPhasesLast = GCWorkerEnd;
121
122 WorkerDataArray<double>* _gc_par_phases[GCParPhasesSentinel];
123
124 WorkerDataArray<size_t>* _merge_rs_merged_sparse;
125 WorkerDataArray<size_t>* _merge_rs_merged_fine;
126 WorkerDataArray<size_t>* _merge_rs_merged_coarse;
127
128 WorkerDataArray<size_t>* _merge_hcc_dirty_cards;
129 WorkerDataArray<size_t>* _merge_hcc_skipped_cards;
130
131 WorkerDataArray<size_t>* _merge_lb_dirty_cards;
132 WorkerDataArray<size_t>* _merge_lb_skipped_cards;
133
134 WorkerDataArray<size_t>* _scan_hr_scanned_cards;
135 WorkerDataArray<size_t>* _scan_hr_scanned_blocks;
136 WorkerDataArray<size_t>* _scan_hr_claimed_chunks;
137
138 WorkerDataArray<size_t>* _opt_merge_rs_merged_sparse;
139 WorkerDataArray<size_t>* _opt_merge_rs_merged_fine;
140 WorkerDataArray<size_t>* _opt_merge_rs_merged_coarse;
141
142 WorkerDataArray<size_t>* _opt_scan_hr_scanned_cards;
143 WorkerDataArray<size_t>* _opt_scan_hr_scanned_blocks;
144 WorkerDataArray<size_t>* _opt_scan_hr_claimed_chunks;
145 WorkerDataArray<size_t>* _opt_scan_hr_scanned_opt_refs;
146 WorkerDataArray<size_t>* _opt_scan_hr_used_memory;
147
148 WorkerDataArray<size_t>* _merge_pss_copied_bytes;
149 WorkerDataArray<size_t>* _merge_pss_lab_waste_bytes;
150 WorkerDataArray<size_t>* _merge_pss_lab_undo_waste_bytes;
151
152 WorkerDataArray<size_t>* _termination_attempts;
153
154 WorkerDataArray<size_t>* _opt_termination_attempts;
155
156 WorkerDataArray<size_t>* _redirtied_cards;
157
158 double _cur_collection_initial_evac_time_ms;
159 double _cur_optional_evac_time_ms;
160 double _cur_collection_code_root_fixup_time_ms;
|
71 Termination,
72 OptTermination,
73 Other,
74 GCWorkerTotal,
75 GCWorkerEnd,
76 StringDedupQueueFixup,
77 StringDedupTableFixup,
78 RedirtyCards,
79 YoungFreeCSet,
80 NonYoungFreeCSet,
81 MergePSS,
82 GCParPhasesSentinel
83 };
84
85 static const GCParPhases ExtRootScanSubPhasesFirst = ThreadRoots;
86 static const GCParPhases ExtRootScanSubPhasesLast = CMRefRoots;
87
88 enum GCMergeRSWorkTimes {
89 MergeRSMergedSparse,
90 MergeRSMergedFine,
91 MergeRSMergedCoarse,
92 MergeRSDirtyCards
93 };
94
95 enum GCScanHRWorkItems {
96 ScanHRScannedCards,
97 ScanHRScannedBlocks,
98 ScanHRClaimedChunks,
99 ScanHRScannedOptRefs,
100 ScanHRUsedMemory
101 };
102
103 enum GCMergeHCCWorkItems {
104 MergeHCCDirtyCards,
105 MergeHCCSkippedCards
106 };
107
108 enum GCMergeLBWorkItems {
109 MergeLBDirtyCards,
110 MergeLBSkippedCards
111 };
112
113 enum GCMergePSSWorkItems {
114 MergePSSCopiedBytes,
115 MergePSSLABWasteBytes,
116 MergePSSLABUndoWasteBytes
117 };
118
119 private:
120 // Markers for grouping the phases in the GCPhases enum above
121 static const int GCMainParPhasesLast = GCWorkerEnd;
122
123 WorkerDataArray<double>* _gc_par_phases[GCParPhasesSentinel];
124
125 WorkerDataArray<size_t>* _merge_rs_merged_sparse;
126 WorkerDataArray<size_t>* _merge_rs_merged_fine;
127 WorkerDataArray<size_t>* _merge_rs_merged_coarse;
128 WorkerDataArray<size_t>* _merge_rs_dirty_cards;
129
130 WorkerDataArray<size_t>* _merge_hcc_dirty_cards;
131 WorkerDataArray<size_t>* _merge_hcc_skipped_cards;
132
133 WorkerDataArray<size_t>* _merge_lb_dirty_cards;
134 WorkerDataArray<size_t>* _merge_lb_skipped_cards;
135
136 WorkerDataArray<size_t>* _scan_hr_scanned_cards;
137 WorkerDataArray<size_t>* _scan_hr_scanned_blocks;
138 WorkerDataArray<size_t>* _scan_hr_claimed_chunks;
139
140 WorkerDataArray<size_t>* _opt_merge_rs_merged_sparse;
141 WorkerDataArray<size_t>* _opt_merge_rs_merged_fine;
142 WorkerDataArray<size_t>* _opt_merge_rs_merged_coarse;
143 WorkerDataArray<size_t>* _opt_merge_rs_dirty_cards;
144
145 WorkerDataArray<size_t>* _opt_scan_hr_scanned_cards;
146 WorkerDataArray<size_t>* _opt_scan_hr_scanned_blocks;
147 WorkerDataArray<size_t>* _opt_scan_hr_claimed_chunks;
148 WorkerDataArray<size_t>* _opt_scan_hr_scanned_opt_refs;
149 WorkerDataArray<size_t>* _opt_scan_hr_used_memory;
150
151 WorkerDataArray<size_t>* _merge_pss_copied_bytes;
152 WorkerDataArray<size_t>* _merge_pss_lab_waste_bytes;
153 WorkerDataArray<size_t>* _merge_pss_lab_undo_waste_bytes;
154
155 WorkerDataArray<size_t>* _termination_attempts;
156
157 WorkerDataArray<size_t>* _opt_termination_attempts;
158
159 WorkerDataArray<size_t>* _redirtied_cards;
160
161 double _cur_collection_initial_evac_time_ms;
162 double _cur_optional_evac_time_ms;
163 double _cur_collection_code_root_fixup_time_ms;
|