| 160 | // The code below is DEPRECATED. |
| 161 | template<typename PtrT> |
| 162 | PtrT AtomicPtr<PtrT>::Exchange(PtrT new_val) { |
| 163 | base::subtle::GMemoryBarrier(); // Release semantics. |
| 164 | // Depending on the system, NoBarrier_AtomicExchange(AtomicWord*) |
| 165 | // may have been defined to return an AtomicWord, Atomic32, or |
| 166 | // Atomic64. We hide that implementation detail here with an |
| 167 | // explicit cast. This prevents MSVC 2005, at least, from complaining. |
| 168 | PtrT old_val = reinterpret_cast<PtrT>(static_cast<AtomicWord>( |
| 169 | base::subtle::NoBarrier_AtomicExchange( |
| 170 | &data_, |
| 171 | reinterpret_cast<AtomicWord>(new_val)))); |
| 172 | base::subtle::GMemoryBarrier(); // And acquire semantics. |
| 173 | return old_val; |
| 174 | } |
| 175 | |
| 176 | template<typename PtrT> |
| 177 | PtrT AtomicPtr<PtrT>::CompareAndSwap(PtrT old_val, PtrT new_val) { |
no test coverage detected