equal
deleted
inserted
replaced
151 return result; |
151 return result; |
152 } |
152 } |
153 |
153 |
154 template<> |
154 template<> |
155 template<typename T> |
155 template<typename T> |
156 inline T Atomic::PlatformXchg<4>::operator()(T exchange_value, |
156 inline T Atomic::PlatformXchg<4>::operator()(T volatile* dest, |
157 T volatile* dest, |
157 T exchange_value, |
158 atomic_memory_order order) const { |
158 atomic_memory_order order) const { |
159 // Note that xchg doesn't necessarily do an acquire |
159 // Note that xchg doesn't necessarily do an acquire |
160 // (see synchronizer.cpp). |
160 // (see synchronizer.cpp). |
161 |
161 |
162 T old_value; |
162 T old_value; |
190 return old_value; |
190 return old_value; |
191 } |
191 } |
192 |
192 |
193 template<> |
193 template<> |
194 template<typename T> |
194 template<typename T> |
195 inline T Atomic::PlatformXchg<8>::operator()(T exchange_value, |
195 inline T Atomic::PlatformXchg<8>::operator()(T volatile* dest, |
196 T volatile* dest, |
196 T exchange_value, |
197 atomic_memory_order order) const { |
197 atomic_memory_order order) const { |
198 STATIC_ASSERT(8 == sizeof(T)); |
198 STATIC_ASSERT(8 == sizeof(T)); |
199 // Note that xchg doesn't necessarily do an acquire |
199 // Note that xchg doesn't necessarily do an acquire |
200 // (see synchronizer.cpp). |
200 // (see synchronizer.cpp). |
201 |
201 |