| Index: base/atomicops_internals_x86_macosx.h
|
| ===================================================================
|
| --- base/atomicops_internals_x86_macosx.h (revision 70178)
|
| +++ base/atomicops_internals_x86_macosx.h (working copy)
|
| @@ -110,7 +110,7 @@
|
| Atomic64 prev_value;
|
| do {
|
| if (OSAtomicCompareAndSwap64(old_value, new_value,
|
| - const_cast<Atomic64*>(ptr))) {
|
| + reinterpret_cast<volatile int64_t*>(ptr))) {
|
| return old_value;
|
| }
|
| prev_value = *ptr;
|
| @@ -124,18 +124,19 @@
|
| do {
|
| old_value = *ptr;
|
| } while (!OSAtomicCompareAndSwap64(old_value, new_value,
|
| - const_cast<Atomic64*>(ptr)));
|
| + reinterpret_cast<volatile int64_t*>(ptr)));
|
| return old_value;
|
| }
|
|
|
| inline Atomic64 NoBarrier_AtomicIncrement(volatile Atomic64 *ptr,
|
| Atomic64 increment) {
|
| - return OSAtomicAdd64(increment, const_cast<Atomic64*>(ptr));
|
| + return OSAtomicAdd64(increment, reinterpret_cast<volatile int64_t*>(ptr));
|
| }
|
|
|
| inline Atomic64 Barrier_AtomicIncrement(volatile Atomic64 *ptr,
|
| Atomic64 increment) {
|
| - return OSAtomicAdd64Barrier(increment, const_cast<Atomic64*>(ptr));
|
| + return OSAtomicAdd64Barrier(increment,
|
| + reinterpret_cast<volatile int64_t*>(ptr));
|
| }
|
|
|
| inline Atomic64 Acquire_CompareAndSwap(volatile Atomic64 *ptr,
|
| @@ -144,7 +145,7 @@
|
| Atomic64 prev_value;
|
| do {
|
| if (OSAtomicCompareAndSwap64Barrier(old_value, new_value,
|
| - const_cast<Atomic64*>(ptr))) {
|
| + reinterpret_cast<volatile int64_t*>(ptr))) {
|
| return old_value;
|
| }
|
| prev_value = *ptr;
|
| @@ -193,12 +194,11 @@
|
|
|
| // MacOS uses long for intptr_t, AtomicWord and Atomic32 are always different
|
| // on the Mac, even when they are the same size. We need to explicitly cast
|
| -// from AtomicWord to Atomic32/64 to implement the AtomicWord interface.
|
| -#ifdef __LP64__
|
| -#define AtomicWordCastType Atomic64
|
| -#else
|
| +// from AtomicWord to Atomic32 to implement the AtomicWord interface.
|
| +// When in 64-bit mode, AtomicWord is the same as Atomic64, so we need not
|
| +// add duplicate definitions.
|
| +#ifndef __LP64__
|
| #define AtomicWordCastType Atomic32
|
| -#endif
|
|
|
| inline AtomicWord NoBarrier_CompareAndSwap(volatile AtomicWord* ptr,
|
| AtomicWord old_value,
|
| @@ -273,6 +273,7 @@
|
| }
|
|
|
| #undef AtomicWordCastType
|
| +#endif
|
|
|
| } // namespace base::subtle
|
| } // namespace base
|
|
|