291 |
|
} |
292 |
|
|
293 |
|
private static int phaseOf(long s) { |
294 |
< |
return (int) (s >>> PHASE_SHIFT); |
294 |
> |
return (int)(s >>> PHASE_SHIFT); |
295 |
|
} |
296 |
|
|
297 |
|
private static int arrivedOf(long s) { |
363 |
|
else if (UNSAFE.compareAndSwapLong(this, stateOffset, s, s-=adj)) { |
364 |
|
if (unarrived == 0) { |
365 |
|
long n = s & PARTIES_MASK; // base of next state |
366 |
< |
int nextUnarrived = ((int)n) >>> PARTIES_SHIFT; |
366 |
> |
int nextUnarrived = (int)n >>> PARTIES_SHIFT; |
367 |
|
if (root != this) |
368 |
|
return parent.doArrive(nextUnarrived == 0); |
369 |
|
if (onAdvance(phase, nextUnarrived)) |
411 |
|
} |
412 |
|
} |
413 |
|
else if (par == null) { // 1st root registration |
414 |
< |
long next = (((long) phase) << PHASE_SHIFT) | adj; |
414 |
> |
long next = ((long)phase << PHASE_SHIFT) | adj; |
415 |
|
if (UNSAFE.compareAndSwapLong(this, stateOffset, s, next)) |
416 |
|
break; |
417 |
|
} |
424 |
|
// assert phase < 0 || (int)state == EMPTY; |
425 |
|
} while (!UNSAFE.compareAndSwapLong |
426 |
|
(this, stateOffset, state, |
427 |
< |
(((long) phase) << PHASE_SHIFT) | adj)); |
427 |
> |
((long)phase << PHASE_SHIFT) | adj)); |
428 |
|
break; |
429 |
|
} |
430 |
|
} |
456 |
|
(int)(s >>> PHASE_SHIFT) && |
457 |
|
!UNSAFE.compareAndSwapLong |
458 |
|
(this, stateOffset, s, |
459 |
< |
s = ((((long) phase) << PHASE_SHIFT) | (s & PARTIES_MASK) | |
459 |
> |
s = (((long)phase << PHASE_SHIFT) | |
460 |
> |
(s & PARTIES_MASK) | |
461 |
|
((p = (int)s >>> PARTIES_SHIFT) == 0 ? EMPTY : |
462 |
|
(u = (int)s & UNARRIVED_MASK) == 0 ? p : u)))) |
463 |
|
s = state; |
526 |
|
this.evenQ = new AtomicReference<QNode>(); |
527 |
|
this.oddQ = new AtomicReference<QNode>(); |
528 |
|
} |
529 |
< |
this.state = (parties == 0) ? (long) EMPTY : |
530 |
< |
((((long) phase) << PHASE_SHIFT) | |
531 |
< |
(((long) parties) << PARTIES_SHIFT) | |
532 |
< |
((long) parties)); |
529 |
> |
this.state = (parties == 0) ? (long)EMPTY : |
530 |
> |
((long)phase << PHASE_SHIFT) | |
531 |
> |
((long)parties << PARTIES_SHIFT) | |
532 |
> |
((long)parties); |
533 |
|
} |
534 |
|
|
535 |
|
/** |
653 |
|
if (root != this) |
654 |
|
return parent.arriveAndAwaitAdvance(); |
655 |
|
long n = s & PARTIES_MASK; // base of next state |
656 |
< |
int nextUnarrived = ((int)n) >>> PARTIES_SHIFT; |
656 |
> |
int nextUnarrived = (int)n >>> PARTIES_SHIFT; |
657 |
|
if (onAdvance(phase, nextUnarrived)) |
658 |
|
n |= TERMINATION_BIT; |
659 |
|
else if (nextUnarrived == 0) |