equal
deleted
inserted
replaced
205 bool GenericTaskQueue<E, F, N>::pop_global(volatile E& t) { |
205 bool GenericTaskQueue<E, F, N>::pop_global(volatile E& t) { |
206 Age oldAge = _age.get(); |
206 Age oldAge = _age.get(); |
207 // Architectures with weak memory model require a barrier here |
207 // Architectures with weak memory model require a barrier here |
208 // to guarantee that bottom is not older than age, |
208 // to guarantee that bottom is not older than age, |
209 // which is crucial for the correctness of the algorithm. |
209 // which is crucial for the correctness of the algorithm. |
210 #if !(defined SPARC || defined IA32 || defined AMD64) |
210 #ifndef CPU_MULTI_COPY_ATOMIC |
211 OrderAccess::fence(); |
211 OrderAccess::fence(); |
212 #endif |
212 #endif |
213 uint localBot = OrderAccess::load_acquire(&_bottom); |
213 uint localBot = OrderAccess::load_acquire(&_bottom); |
214 uint n_elems = size(localBot, oldAge.top()); |
214 uint n_elems = size(localBot, oldAge.top()); |
215 if (n_elems == 0) { |
215 if (n_elems == 0) { |