summaryrefslogtreecommitdiff
path: root/deps/v8/src/base/atomic-utils.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/base/atomic-utils.h')
-rw-r--r--deps/v8/src/base/atomic-utils.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/deps/v8/src/base/atomic-utils.h b/deps/v8/src/base/atomic-utils.h
index d81c537e57..90681b8a35 100644
--- a/deps/v8/src/base/atomic-utils.h
+++ b/deps/v8/src/base/atomic-utils.h
@@ -377,6 +377,22 @@ class AtomicElement {
T value_;
};
+template <typename T,
+ typename = typename std::enable_if<std::is_unsigned<T>::value>::type>
+inline void CheckedIncrement(std::atomic<T>* number, T amount) {
+ const T old = number->fetch_add(amount);
+ DCHECK_GE(old + amount, old);
+ USE(old);
+}
+
+template <typename T,
+ typename = typename std::enable_if<std::is_unsigned<T>::value>::type>
+inline void CheckedDecrement(std::atomic<T>* number, T amount) {
+ const T old = number->fetch_sub(amount);
+ DCHECK_GE(old, amount);
+ USE(old);
+}
+
} // namespace base
} // namespace v8