25 #ifndef V8_BASE_ATOMICOPS_H_
26 #define V8_BASE_ATOMICOPS_H_
31 #if defined(_WIN32) && defined(V8_HOST_ARCH_64_BIT)
45 #ifdef V8_HOST_ARCH_64_BIT
48 #if defined(__ILP32__)
49 typedef int64_t Atomic64;
51 typedef intptr_t Atomic64;
112 #ifdef V8_HOST_ARCH_64_BIT
137 #if defined(THREAD_SANITIZER)
139 #elif defined(_MSC_VER) && (V8_HOST_ARCH_IA32 || V8_HOST_ARCH_X64)
141 #elif defined(__APPLE__)
143 #elif defined(__GNUC__) && V8_HOST_ARCH_ARM64
145 #elif defined(__GNUC__) && V8_HOST_ARCH_ARM
147 #elif defined(__GNUC__) && (V8_HOST_ARCH_IA32 || V8_HOST_ARCH_X64)
149 #elif defined(__GNUC__) && V8_HOST_ARCH_MIPS
151 #elif defined(__GNUC__) && V8_HOST_ARCH_MIPS64
154 #error "Atomic operations are not supported on your platform"
159 #if defined(__APPLE__) || defined(__OpenBSD__)
Atomic32 Release_Load(volatile const Atomic32 *ptr)
Atomic32 NoBarrier_CompareAndSwap(volatile Atomic32 *ptr, Atomic32 old_value, Atomic32 new_value)
void Acquire_Store(volatile Atomic32 *ptr, Atomic32 value)
Atomic32 Acquire_Load(volatile const Atomic32 *ptr)
Atomic32 NoBarrier_AtomicIncrement(volatile Atomic32 *ptr, Atomic32 increment)
void Release_Store(volatile Atomic32 *ptr, Atomic32 value)
Atomic32 Barrier_AtomicIncrement(volatile Atomic32 *ptr, Atomic32 increment)
void NoBarrier_Store(volatile Atomic8 *ptr, Atomic8 value)
Atomic32 NoBarrier_AtomicExchange(volatile Atomic32 *ptr, Atomic32 new_value)
Atomic32 Release_CompareAndSwap(volatile Atomic32 *ptr, Atomic32 old_value, Atomic32 new_value)
Atomic8 NoBarrier_Load(volatile const Atomic8 *ptr)
Atomic32 Acquire_CompareAndSwap(volatile Atomic32 *ptr, Atomic32 old_value, Atomic32 new_value)
Debugger support for the V8 JavaScript engine.