From 642e1ac635f2563b4a14c255374f02645ae85dac Mon Sep 17 00:00:00 2001 From: Nayana-ibm Date: Mon, 27 Nov 2017 05:43:30 -0500 Subject: [PATCH] Adding Release_CompareAndSwap 64-bit variant --- src/google/protobuf/stubs/atomicops_internals_generic_gcc.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/google/protobuf/stubs/atomicops_internals_generic_gcc.h b/src/google/protobuf/stubs/atomicops_internals_generic_gcc.h index 0b0b06ce6c..075c406aba 100644 --- a/src/google/protobuf/stubs/atomicops_internals_generic_gcc.h +++ b/src/google/protobuf/stubs/atomicops_internals_generic_gcc.h @@ -146,6 +146,14 @@ inline Atomic64 NoBarrier_Load(volatile const Atomic64* ptr) { return __atomic_load_n(ptr, __ATOMIC_RELAXED); } +inline Atomic64 Release_CompareAndSwap(volatile Atomic64* ptr, + Atomic64 old_value, + Atomic64 new_value) { + __atomic_compare_exchange_n(ptr, &old_value, new_value, false, + __ATOMIC_RELEASE, __ATOMIC_ACQUIRE); + return old_value; +} + #endif // defined(__LP64__) } // namespace internal