@@ -190,15 +190,22 @@ class RuntimeProfile {
190190
191191 virtual Counter* clone () const { return new Counter (type (), value (), _level); }
192192
193- virtual void update (int64_t delta) { _value.fetch_add (delta, std::memory_order_relaxed); }
193+ virtual void update (int64_t delta) {
194+ _value.fetch_add (delta, std::memory_order_relaxed);
195+ DCHECK_GT (_value.load (std::memory_order_seq_cst), -1L );
196+ }
194197
195198 void bit_or (int64_t delta) { _value.fetch_or (delta, std::memory_order_relaxed); }
196199
197- virtual void set (int64_t value) { _value.store (value, std::memory_order_relaxed); }
200+ virtual void set (int64_t value) {
201+ _value.store (value, std::memory_order_relaxed);
202+ DCHECK_GT (_value.load (std::memory_order_seq_cst), -1L );
203+ }
198204
199205 virtual void set (double value) {
200206 DCHECK_EQ (sizeof (value), sizeof (int64_t ));
201207 _value.store (binary_cast<double , int64_t >(value), std::memory_order_relaxed);
208+ DCHECK_GT (_value.load (std::memory_order_seq_cst), -1L );
202209 }
203210
204211 virtual int64_t value () const { return _value.load (std::memory_order_relaxed); }
@@ -270,6 +277,7 @@ class RuntimeProfile {
270277 if (delta > 0 ) {
271278 UpdateMax (current_value_);
272279 }
280+ DCHECK_GT (current_value_.load (std::memory_order_seq_cst), -1L );
273281 }
274282 virtual void update (int64_t delta) override { add (delta); }
275283
@@ -331,6 +339,7 @@ class RuntimeProfile {
331339 void set (int64_t v) override {
332340 current_value_.store (v, std::memory_order_relaxed);
333341 UpdateMax (v);
342+ DCHECK_GT (_value.load (std::memory_order_seq_cst), -1L );
334343 }
335344
336345 int64_t current_value () const { return current_value_.load (std::memory_order_relaxed); }
0 commit comments