Mercurial > hg > graal-jvmci-8
comparison src/share/vm/gc_implementation/g1/g1GCPhaseTimes.cpp @ 7633:7df93f7c14a5
8006242: G1: WorkerDataArray<T>::verify() too strict for double calculations
Summary: Also reviewed by vitalyd@gmail.com.
Reviewed-by: johnc, mgerdin
author | brutisso |
---|---|
date | Wed, 16 Jan 2013 12:46:27 +0100 |
parents | 5baec2e69518 |
children | 194f52aa2f23 |
comparison
equal
deleted
inserted
replaced
7619:46e60405583b | 7633:7df93f7c14a5 |
---|---|
129 buf.append_and_print_cr("]"); | 129 buf.append_and_print_cr("]"); |
130 } | 130 } |
131 | 131 |
132 #ifndef PRODUCT | 132 #ifndef PRODUCT |
133 | 133 |
134 template <> const int WorkerDataArray<int>::_uninitialized = -1; | |
135 template <> const double WorkerDataArray<double>::_uninitialized = -1.0; | |
136 template <> const size_t WorkerDataArray<size_t>::_uninitialized = (size_t)-1; | |
137 | |
134 template <class T> | 138 template <class T> |
135 void WorkerDataArray<T>::reset() { | 139 void WorkerDataArray<T>::reset() { |
136 for (uint i = 0; i < _length; i++) { | 140 for (uint i = 0; i < _length; i++) { |
137 _data[i] = (T)-1; | 141 _data[i] = (T)_uninitialized; |
138 } | 142 } |
139 } | 143 } |
140 | 144 |
141 template <class T> | 145 template <class T> |
142 void WorkerDataArray<T>::verify() { | 146 void WorkerDataArray<T>::verify() { |
143 for (uint i = 0; i < _length; i++) { | 147 for (uint i = 0; i < _length; i++) { |
144 assert(_data[i] >= (T)0, err_msg("Invalid data for worker %d", i)); | 148 assert(_data[i] != _uninitialized, |
149 err_msg("Invalid data for worker " UINT32_FORMAT ", data: %lf, uninitialized: %lf", | |
150 i, (double)_data[i], (double)_uninitialized)); | |
145 } | 151 } |
146 } | 152 } |
147 | 153 |
148 #endif | 154 #endif |
149 | 155 |
199 _last_obj_copy_times_ms.verify(); | 205 _last_obj_copy_times_ms.verify(); |
200 _last_termination_times_ms.verify(); | 206 _last_termination_times_ms.verify(); |
201 _last_termination_attempts.verify(); | 207 _last_termination_attempts.verify(); |
202 _last_gc_worker_end_times_ms.verify(); | 208 _last_gc_worker_end_times_ms.verify(); |
203 | 209 |
204 for (uint i = 0; i < _active_gc_threads; i++) { | 210 for (uint i = 0; i < _active_gc_threads; i++) { |
205 double worker_time = _last_gc_worker_end_times_ms.get(i) - _last_gc_worker_start_times_ms.get(i); | 211 double worker_time = _last_gc_worker_end_times_ms.get(i) - _last_gc_worker_start_times_ms.get(i); |
206 _last_gc_worker_times_ms.set(i, worker_time); | 212 _last_gc_worker_times_ms.set(i, worker_time); |
207 | 213 |
208 double worker_known_time = _last_ext_root_scan_times_ms.get(i) + | 214 double worker_known_time = _last_ext_root_scan_times_ms.get(i) + |
209 _last_satb_filtering_times_ms.get(i) + | 215 _last_satb_filtering_times_ms.get(i) + |
210 _last_update_rs_times_ms.get(i) + | 216 _last_update_rs_times_ms.get(i) + |
211 _last_scan_rs_times_ms.get(i) + | 217 _last_scan_rs_times_ms.get(i) + |
212 _last_obj_copy_times_ms.get(i) + | 218 _last_obj_copy_times_ms.get(i) + |
213 _last_termination_times_ms.get(i); | 219 _last_termination_times_ms.get(i); |
214 | 220 |
215 double worker_other_time = worker_time - worker_known_time; | 221 double worker_other_time = worker_time - worker_known_time; |
216 _last_gc_worker_other_times_ms.set(i, worker_other_time); | 222 _last_gc_worker_other_times_ms.set(i, worker_other_time); |
217 } | 223 } |
218 | 224 |
219 _last_gc_worker_times_ms.verify(); | 225 _last_gc_worker_times_ms.verify(); |
220 _last_gc_worker_other_times_ms.verify(); | 226 _last_gc_worker_other_times_ms.verify(); |
221 } | 227 } |
222 | 228 |