| Index: base/atomicops_internals_x86_gcc.h
|
| diff --git a/base/atomicops_internals_x86_gcc.h b/base/atomicops_internals_x86_gcc.h
|
| index f523f6f725fd12695b7b0eeddd346d8d251e8021..002734b2b8dfe319a0f9ef63aa2c6e25132e4f73 100644
|
| --- a/base/atomicops_internals_x86_gcc.h
|
| +++ b/base/atomicops_internals_x86_gcc.h
|
| @@ -238,6 +238,23 @@ inline Atomic64 Release_Load(volatile const Atomic64* ptr) {
|
| MemoryBarrier();
|
| return *ptr;
|
| }
|
| +
|
| +inline Atomic64 Acquire_CompareAndSwap(volatile Atomic64* ptr,
|
| + Atomic64 old_value,
|
| + Atomic64 new_value) {
|
| + Atomic64 x = NoBarrier_CompareAndSwap(ptr, old_value, new_value);
|
| + if (AtomicOps_Internalx86CPUFeatures.has_amd_lock_mb_bug) {
|
| + __asm__ __volatile__("lfence" : : : "memory");
|
| + }
|
| + return x;
|
| +}
|
| +
|
| +inline Atomic64 Release_CompareAndSwap(volatile Atomic64* ptr,
|
| + Atomic64 old_value,
|
| + Atomic64 new_value) {
|
| + return NoBarrier_CompareAndSwap(ptr, old_value, new_value);
|
| +}
|
| +
|
| #endif // defined(__x86_64__)
|
|
|
| } // namespace base::subtle
|
|
|