equal
deleted
inserted
replaced
271 int old_claim = Atomic::load(&_claim); |
271 int old_claim = Atomic::load(&_claim); |
272 if ((old_claim & claim) == 0) { |
272 if ((old_claim & claim) == 0) { |
273 return; |
273 return; |
274 } |
274 } |
275 int new_claim = old_claim & ~claim; |
275 int new_claim = old_claim & ~claim; |
276 if (Atomic::cmpxchg(new_claim, &_claim, old_claim) == old_claim) { |
276 if (Atomic::cmpxchg(&_claim, old_claim, new_claim) == old_claim) { |
277 return; |
277 return; |
278 } |
278 } |
279 } |
279 } |
280 } |
280 } |
281 |
281 |
284 int old_claim = Atomic::load(&_claim); |
284 int old_claim = Atomic::load(&_claim); |
285 if ((old_claim & claim) == claim) { |
285 if ((old_claim & claim) == claim) { |
286 return false; |
286 return false; |
287 } |
287 } |
288 int new_claim = old_claim | claim; |
288 int new_claim = old_claim | claim; |
289 if (Atomic::cmpxchg(new_claim, &_claim, old_claim) == old_claim) { |
289 if (Atomic::cmpxchg(&_claim, old_claim, new_claim) == old_claim) { |
290 return true; |
290 return true; |
291 } |
291 } |
292 } |
292 } |
293 } |
293 } |
294 |
294 |