@@ -191,21 +191,39 @@ class RuntimeProfile {
191191 virtual Counter* clone () const { return new Counter (type (), value (), _level); }
192192
193193 virtual void update (int64_t delta) {
194+ #ifndef NDEBUG
195+ int64_t prev_value = _value.load (std::memory_order_seq_cst);
196+ #endif
194197 _value.fetch_add (delta, std::memory_order_relaxed);
195- DCHECK_GT (_value.load (std::memory_order_seq_cst), -1L );
198+ #ifndef NDEBUG
199+ DCHECK_GT (_value.load (std::memory_order_seq_cst), -1L )
200+ << " delta: " << delta << " prev_value: " << prev_value;
201+ #endif
196202 }
197203
198204 void bit_or (int64_t delta) { _value.fetch_or (delta, std::memory_order_relaxed); }
199205
200206 virtual void set (int64_t value) {
207+ #ifndef NDEBUG
208+ int64_t prev_value = _value.load (std::memory_order_seq_cst);
209+ #endif
201210 _value.store (value, std::memory_order_relaxed);
202- DCHECK_GT (_value.load (std::memory_order_seq_cst), -1L );
211+ #ifndef NDEBUG
212+ DCHECK_GT (_value.load (std::memory_order_seq_cst), -1L )
213+ << " new value: " << value << " prev_value: " << prev_value;
214+ #endif
203215 }
204216
205217 virtual void set (double value) {
206218 DCHECK_EQ (sizeof (value), sizeof (int64_t ));
219+ #ifndef NDEBUG
220+ int64_t prev_value = _value.load (std::memory_order_seq_cst);
221+ #endif
207222 _value.store (binary_cast<double , int64_t >(value), std::memory_order_relaxed);
208- DCHECK_GT (_value.load (std::memory_order_seq_cst), -1L );
223+ #ifndef NDEBUG
224+ DCHECK_GT (_value.load (std::memory_order_seq_cst), -1L )
225+ << " new value: " << value << " prev_value: " << prev_value;
226+ #endif
209227 }
210228
211229 virtual int64_t value () const { return _value.load (std::memory_order_relaxed); }
@@ -337,9 +355,18 @@ class RuntimeProfile {
337355 }
338356
339357 void set (int64_t v) override {
358+ #ifndef NDEBUG
359+ int64_t prev_value = current_value_.load (std::memory_order_seq_cst);
360+ int64_t prev_max_value = value_.load (std::memory_order_seq_cst);
361+ #endif
340362 current_value_.store (v, std::memory_order_relaxed);
341363 UpdateMax (v);
342- DCHECK_GT (_value.load (std::memory_order_seq_cst), -1L );
364+ #ifndef NDEBUG
365+ DCHECK_GT (current_value_.load (std::memory_order_seq_cst), -1L )
366+ << " prev_value: " << prev_value;
367+ DCHECK_GT (_value.load (std::memory_order_seq_cst), -1L )
368+ << " prev_max_value: " << prev_max_value << " prev_value: " << prev_value;
369+ #endif
343370 }
344371
345372 int64_t current_value () const { return current_value_.load (std::memory_order_relaxed); }
0 commit comments