equal
deleted
inserted
replaced
72 reinterpret_cast<int64_t volatile*>(dest))); |
72 reinterpret_cast<int64_t volatile*>(dest))); |
73 } |
73 } |
74 |
74 |
75 template<> |
75 template<> |
76 template<typename T> |
76 template<typename T> |
77 inline T Atomic::PlatformXchg<4>::operator()(T exchange_value, |
77 inline T Atomic::PlatformXchg<4>::operator()(T volatile* dest, |
78 T volatile* dest, |
78 T exchange_value, |
79 atomic_memory_order order) const { |
79 atomic_memory_order order) const { |
80 STATIC_ASSERT(4 == sizeof(T)); |
80 STATIC_ASSERT(4 == sizeof(T)); |
81 return PrimitiveConversions::cast<T>( |
81 return PrimitiveConversions::cast<T>( |
82 _Atomic_xchg(PrimitiveConversions::cast<int32_t>(exchange_value), |
82 _Atomic_xchg(PrimitiveConversions::cast<int32_t>(exchange_value), |
83 reinterpret_cast<int32_t volatile*>(dest))); |
83 reinterpret_cast<int32_t volatile*>(dest))); |
85 |
85 |
86 extern "C" int64_t _Atomic_xchg_long(int64_t exchange_value, volatile int64_t* dest); |
86 extern "C" int64_t _Atomic_xchg_long(int64_t exchange_value, volatile int64_t* dest); |
87 |
87 |
88 template<> |
88 template<> |
89 template<typename T> |
89 template<typename T> |
90 inline T Atomic::PlatformXchg<8>::operator()(T exchange_value, |
90 inline T Atomic::PlatformXchg<8>::operator()(T volatile* dest, |
91 T volatile* dest, |
91 T exchange_value, |
92 atomic_memory_order order) const { |
92 atomic_memory_order order) const { |
93 STATIC_ASSERT(8 == sizeof(T)); |
93 STATIC_ASSERT(8 == sizeof(T)); |
94 return PrimitiveConversions::cast<T>( |
94 return PrimitiveConversions::cast<T>( |
95 _Atomic_xchg_long(PrimitiveConversions::cast<int64_t>(exchange_value), |
95 _Atomic_xchg_long(PrimitiveConversions::cast<int64_t>(exchange_value), |
96 reinterpret_cast<int64_t volatile*>(dest))); |
96 reinterpret_cast<int64_t volatile*>(dest))); |