25 #ifndef V8_BASE_ATOMICOPS_H_ 26 #define V8_BASE_ATOMICOPS_H_ 36 #include "src/base/base-export.h" 37 #include "src/base/build_config.h" 43 typedef int16_t Atomic16;
44 typedef int32_t Atomic32;
45 #if defined(V8_HOST_ARCH_64_BIT) 48 #if defined(__ILP32__) 51 typedef intptr_t Atomic64;
52 #endif // defined(__ILP32__) 53 #endif // defined(V8_HOST_ARCH_64_BIT) 57 typedef intptr_t AtomicWord;
69 Atomic32 Relaxed_CompareAndSwap(
volatile Atomic32* ptr, Atomic32 old_value,
74 Atomic32 Relaxed_AtomicExchange(
volatile Atomic32* ptr, Atomic32 new_value);
78 Atomic32 Relaxed_AtomicIncrement(
volatile Atomic32* ptr, Atomic32 increment);
80 Atomic32 Barrier_AtomicIncrement(
volatile Atomic32* ptr,
92 Atomic32 Acquire_CompareAndSwap(
volatile Atomic32* ptr,
95 Atomic32 Release_CompareAndSwap(
volatile Atomic32* ptr,
99 void SeqCst_MemoryFence();
100 void Relaxed_Store(
volatile Atomic8* ptr, Atomic8 value);
101 void Relaxed_Store(
volatile Atomic16* ptr, Atomic16 value);
102 void Relaxed_Store(
volatile Atomic32* ptr, Atomic32 value);
103 void Release_Store(
volatile Atomic32* ptr, Atomic32 value);
105 Atomic8 Relaxed_Load(
volatile const Atomic8* ptr);
106 Atomic16 Relaxed_Load(
volatile const Atomic16* ptr);
107 Atomic32 Relaxed_Load(
volatile const Atomic32* ptr);
108 Atomic32 Acquire_Load(
volatile const Atomic32* ptr);
111 #ifdef V8_HOST_ARCH_64_BIT 112 Atomic64 Relaxed_CompareAndSwap(
volatile Atomic64* ptr, Atomic64 old_value,
114 Atomic64 Relaxed_AtomicExchange(
volatile Atomic64* ptr, Atomic64 new_value);
115 Atomic64 Relaxed_AtomicIncrement(
volatile Atomic64* ptr, Atomic64 increment);
116 Atomic64 Barrier_AtomicIncrement(
volatile Atomic64* ptr, Atomic64 increment);
118 Atomic64 Acquire_CompareAndSwap(
volatile Atomic64* ptr,
121 Atomic64 Release_CompareAndSwap(
volatile Atomic64* ptr,
124 void Relaxed_Store(
volatile Atomic64* ptr, Atomic64 value);
125 void Release_Store(
volatile Atomic64* ptr, Atomic64 value);
126 Atomic64 Relaxed_Load(
volatile const Atomic64* ptr);
127 Atomic64 Acquire_Load(
volatile const Atomic64* ptr);
128 #endif // V8_HOST_ARCH_64_BIT 133 #if defined(V8_OS_WIN) 134 #include "src/base/atomicops_internals_std.h" 138 #include "src/base/atomicops_internals_portable.h" 143 #if defined(V8_OS_MACOSX) || defined(V8_OS_OPENBSD) || defined(V8_OS_AIX) 144 #include "src/base/atomicops_internals_atomicword_compat.h" 147 #endif // V8_BASE_ATOMICOPS_H_