Index: third_party/protobuf/src/google/protobuf/stubs/atomicops_internals_generic_gcc.h |
diff --git a/third_party/protobuf/src/google/protobuf/stubs/atomicops_internals_generic_gcc.h b/third_party/protobuf/src/google/protobuf/stubs/atomicops_internals_generic_gcc.h |
index a0116a60ee796b3300bb412ecbe613ab9b307779..0b0b06ce6cf92be8d69b97730595008c19ff84ef 100644 |
--- a/third_party/protobuf/src/google/protobuf/stubs/atomicops_internals_generic_gcc.h |
+++ b/third_party/protobuf/src/google/protobuf/stubs/atomicops_internals_generic_gcc.h |
@@ -38,7 +38,7 @@ namespace internal { |
inline Atomic32 NoBarrier_CompareAndSwap(volatile Atomic32* ptr, |
Atomic32 old_value, |
Atomic32 new_value) { |
- __atomic_compare_exchange_n(ptr, &old_value, new_value, true, |
+ __atomic_compare_exchange_n(ptr, &old_value, new_value, false, |
__ATOMIC_RELAXED, __ATOMIC_RELAXED); |
return old_value; |
} |
@@ -61,7 +61,7 @@ inline Atomic32 Barrier_AtomicIncrement(volatile Atomic32* ptr, |
inline Atomic32 Acquire_CompareAndSwap(volatile Atomic32* ptr, |
Atomic32 old_value, |
Atomic32 new_value) { |
- __atomic_compare_exchange_n(ptr, &old_value, new_value, true, |
+ __atomic_compare_exchange_n(ptr, &old_value, new_value, false, |
__ATOMIC_ACQUIRE, __ATOMIC_ACQUIRE); |
return old_value; |
} |
@@ -69,7 +69,7 @@ inline Atomic32 Acquire_CompareAndSwap(volatile Atomic32* ptr, |
inline Atomic32 Release_CompareAndSwap(volatile Atomic32* ptr, |
Atomic32 old_value, |
Atomic32 new_value) { |
- __atomic_compare_exchange_n(ptr, &old_value, new_value, true, |
+ __atomic_compare_exchange_n(ptr, &old_value, new_value, false, |
__ATOMIC_RELEASE, __ATOMIC_ACQUIRE); |
return old_value; |
} |
@@ -78,7 +78,7 @@ inline void NoBarrier_Store(volatile Atomic32* ptr, Atomic32 value) { |
__atomic_store_n(ptr, value, __ATOMIC_RELAXED); |
} |
-inline void MemoryBarrier() { |
+inline void MemoryBarrierInternal() { |
__sync_synchronize(); |
} |
@@ -115,7 +115,7 @@ inline Atomic64 Acquire_Load(volatile const Atomic64* ptr) { |
inline Atomic64 Acquire_CompareAndSwap(volatile Atomic64* ptr, |
Atomic64 old_value, |
Atomic64 new_value) { |
- __atomic_compare_exchange_n(ptr, &old_value, new_value, true, |
+ __atomic_compare_exchange_n(ptr, &old_value, new_value, false, |
__ATOMIC_ACQUIRE, __ATOMIC_ACQUIRE); |
return old_value; |
} |
@@ -123,11 +123,29 @@ inline Atomic64 Acquire_CompareAndSwap(volatile Atomic64* ptr, |
inline Atomic64 NoBarrier_CompareAndSwap(volatile Atomic64* ptr, |
Atomic64 old_value, |
Atomic64 new_value) { |
- __atomic_compare_exchange_n(ptr, &old_value, new_value, true, |
+ __atomic_compare_exchange_n(ptr, &old_value, new_value, false, |
__ATOMIC_RELAXED, __ATOMIC_RELAXED); |
return old_value; |
} |
+inline Atomic64 NoBarrier_AtomicIncrement(volatile Atomic64* ptr, |
+ Atomic64 increment) { |
+ return __atomic_add_fetch(ptr, increment, __ATOMIC_RELAXED); |
+} |
+ |
+inline void NoBarrier_Store(volatile Atomic64* ptr, Atomic64 value) { |
+ __atomic_store_n(ptr, value, __ATOMIC_RELAXED); |
+} |
+ |
+inline Atomic64 NoBarrier_AtomicExchange(volatile Atomic64* ptr, |
+ Atomic64 new_value) { |
+ return __atomic_exchange_n(ptr, new_value, __ATOMIC_RELAXED); |
+} |
+ |
+inline Atomic64 NoBarrier_Load(volatile const Atomic64* ptr) { |
+ return __atomic_load_n(ptr, __ATOMIC_RELAXED); |
+} |
+ |
#endif // defined(__LP64__) |
} // namespace internal |