diff options
author | Timothy Simpson <simpsont@objectcomputing.com> | 2021-09-05 15:33:31 -0500 |
---|---|---|
committer | Timothy Simpson <simpsont@objectcomputing.com> | 2021-09-05 15:33:31 -0500 |
commit | d01b67f0e52a34269857eb3c574ff589cbe194bb (patch) | |
tree | fbbe36fcf223787eac83b9e272b5e543d16958fe /ACE/ace/Atomic_Op_GCC_T.inl | |
parent | e7bf76df360f7f9e9c9d254b9180e3bfca666e45 (diff) | |
download | ATCD-d01b67f0e52a34269857eb3c574ff589cbe194bb.tar.gz |
Update ACE_Atomic_Op_GCC to use newer __atomic operations
Diffstat (limited to 'ACE/ace/Atomic_Op_GCC_T.inl')
-rw-r--r-- | ACE/ace/Atomic_Op_GCC_T.inl | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/ACE/ace/Atomic_Op_GCC_T.inl b/ACE/ace/Atomic_Op_GCC_T.inl index b102d422395..ed0f5eb232a 100644 --- a/ACE/ace/Atomic_Op_GCC_T.inl +++ b/ACE/ace/Atomic_Op_GCC_T.inl @@ -29,91 +29,91 @@ template <typename T> ACE_INLINE T ACE_Atomic_Op_GCC<T>::operator++ () { - return __sync_add_and_fetch (&this->value_, 1); + return __atomic_add_fetch (&value_, 1, __ATOMIC_ACQ_REL); } template <typename T> ACE_INLINE T ACE_Atomic_Op_GCC<T>::operator++ (int) { - return __sync_fetch_and_add (&this->value_, 1); + return __atomic_fetch_add (&value_, 1, __ATOMIC_ACQ_REL); } template <typename T> ACE_INLINE T ACE_Atomic_Op_GCC<T>::operator-- () { - return __sync_sub_and_fetch (&this->value_, 1); + return __atomic_sub_fetch (&value_, 1, __ATOMIC_ACQ_REL); } template <typename T> ACE_INLINE T ACE_Atomic_Op_GCC<T>::operator-- (int) { - return __sync_fetch_and_sub (&this->value_, 1); + return __atomic_fetch_sub (&value_, 1, __ATOMIC_ACQ_REL); } template <typename T> ACE_INLINE T ACE_Atomic_Op_GCC<T>::operator+= (T rhs) { - return __sync_add_and_fetch (&this->value_, rhs); + return __atomic_add_fetch (&value_, rhs, __ATOMIC_ACQ_REL); } template <typename T> ACE_INLINE T ACE_Atomic_Op_GCC<T>::operator-= (T rhs) { - return __sync_sub_and_fetch (&this->value_, rhs); + return __atomic_sub_fetch (&value_, rhs, __ATOMIC_ACQ_REL); } template <typename T> ACE_INLINE bool ACE_Atomic_Op_GCC<T>::operator== (T rhs) const { - return (this->value_ == rhs); + return __atomic_load_n (&value_, __ATOMIC_CONSUME) == rhs; } template <typename T> ACE_INLINE bool ACE_Atomic_Op_GCC<T>::operator!= (T rhs) const { - return (this->value_ != rhs); + return __atomic_load_n (&value_, __ATOMIC_CONSUME) != rhs; } template <typename T> ACE_INLINE bool ACE_Atomic_Op_GCC<T>::operator>= (T rhs) const { - return (this->value_ >= rhs); + return __atomic_load_n (&value_, __ATOMIC_CONSUME) >= rhs; } template <typename T> ACE_INLINE bool ACE_Atomic_Op_GCC<T>::operator> (T rhs) const { - return (this->value_ > rhs); + return __atomic_load_n (&value_, __ATOMIC_CONSUME) > rhs; } template <typename T> ACE_INLINE bool ACE_Atomic_Op_GCC<T>::operator<= (T rhs) const { - return (this->value_ <= rhs); + return __atomic_load_n (&value_, __ATOMIC_CONSUME) <= rhs; } template <typename T> ACE_INLINE bool ACE_Atomic_Op_GCC<T>::operator< (T rhs) const { - return (this->value_ < rhs); + return __atomic_load_n (&value_, __ATOMIC_CONSUME) < rhs; } template <typename T> ACE_INLINE ACE_Atomic_Op_GCC<T> & ACE_Atomic_Op_GCC<T>::operator= (T rhs) { - (void) __sync_lock_test_and_set (&this->value_, rhs); + __atomic_store_n (&value_, rhs, __ATOMIC_RELEASE); return *this; } @@ -122,7 +122,7 @@ ACE_INLINE ACE_Atomic_Op_GCC<T> & ACE_Atomic_Op_GCC<T>::operator= ( const ACE_Atomic_Op_GCC<T> &rhs) { - (void) __sync_lock_test_and_set (&this->value_, rhs.value_); + __atomic_store_n (&value_, __atomic_load_n (&rhs.value_, __ATOMIC_CONSUME), __ATOMIC_RELEASE); return *this; } @@ -130,21 +130,21 @@ template <typename T> ACE_INLINE T ACE_Atomic_Op_GCC<T>::exchange (T newval) { - return __sync_val_compare_and_swap (&this->value_, this->value_, newval); + return __atomic_exchange_n (&value_, newval, __ATOMIC_ACQ_REL); } template <typename T> ACE_INLINE T ACE_Atomic_Op_GCC<T>::value () const { - return this->value_; + return __atomic_load_n (&value_, __ATOMIC_CONSUME); } template <typename T> ACE_INLINE volatile T & ACE_Atomic_Op_GCC<T>::value_i () { - return this->value_; + return value_; } ACE_END_VERSIONED_NAMESPACE_DECL |