1661 |
|
return -1; |
1662 |
|
else if ((int)(ctl >> RC_SHIFT) > ac) |
1663 |
|
Thread.onSpinWait(); // signal in progress |
1664 |
< |
else if (!(alt = !alt)) { // check between park calls |
1665 |
< |
if (!Thread.interrupted() && deadline != 0L && |
1666 |
< |
deadline - System.currentTimeMillis() <= TIMEOUT_SLOP && |
1667 |
< |
compareAndSetCtl(c, ((UC_MASK & (c - TC_UNIT)) | |
1668 |
< |
(w.stackPred & SP_MASK)))) { |
1669 |
< |
w.phase = QUIET; |
1670 |
< |
return -1; // drop on timeout |
1671 |
< |
} |
1672 |
< |
} |
1664 |
> |
else if (deadline != 0L && |
1665 |
> |
deadline - System.currentTimeMillis() <= TIMEOUT_SLOP) { |
1666 |
> |
if (c != (c = ctl)) // ensure consistent |
1667 |
> |
ac = (int)(c >> RC_SHIFT); |
1668 |
> |
else if (compareAndSetCtl(c, ((UC_MASK & (c - TC_UNIT)) | |
1669 |
> |
(w.stackPred & SP_MASK)))) { |
1670 |
> |
w.phase = QUIET; |
1671 |
> |
return -1; // drop on timeout |
1672 |
> |
} |
1673 |
> |
} |
1674 |
> |
else if (!(alt = !alt)) // check between park calls |
1675 |
> |
Thread.interrupted(); |
1676 |
|
else if (deadline != 0L) |
1677 |
|
LockSupport.parkUntil(deadline); |
1678 |
< |
else |
1678 |
> |
else |
1679 |
|
LockSupport.park(); |
1680 |
|
} |
1681 |
|
LockSupport.setCurrentBlocker(null); |