equal
deleted
inserted
replaced
91 template<> |
91 template<> |
92 struct Atomic::PlatformCmpxchg<1> : Atomic::CmpxchgByteUsingInt {}; |
92 struct Atomic::PlatformCmpxchg<1> : Atomic::CmpxchgByteUsingInt {}; |
93 |
93 |
94 template<> |
94 template<> |
95 template<typename T> |
95 template<typename T> |
96 inline T Atomic::PlatformCmpxchg<4>::operator()(T exchange_value, |
96 inline T Atomic::PlatformCmpxchg<4>::operator()(T volatile* dest, |
97 T volatile* dest, |
|
98 T compare_value, |
97 T compare_value, |
|
98 T exchange_value, |
99 atomic_memory_order order) const { |
99 atomic_memory_order order) const { |
100 STATIC_ASSERT(4 == sizeof(T)); |
100 STATIC_ASSERT(4 == sizeof(T)); |
101 return __sync_val_compare_and_swap(dest, compare_value, exchange_value); |
101 return __sync_val_compare_and_swap(dest, compare_value, exchange_value); |
102 } |
102 } |
103 |
103 |
104 template<> |
104 template<> |
105 template<typename T> |
105 template<typename T> |
106 inline T Atomic::PlatformCmpxchg<8>::operator()(T exchange_value, |
106 inline T Atomic::PlatformCmpxchg<8>::operator()(T volatile* dest, |
107 T volatile* dest, |
|
108 T compare_value, |
107 T compare_value, |
|
108 T exchange_value, |
109 atomic_memory_order order) const { |
109 atomic_memory_order order) const { |
110 STATIC_ASSERT(8 == sizeof(T)); |
110 STATIC_ASSERT(8 == sizeof(T)); |
111 return __sync_val_compare_and_swap(dest, compare_value, exchange_value); |
111 return __sync_val_compare_and_swap(dest, compare_value, exchange_value); |
112 } |
112 } |
113 |
113 |