617 |
|
|
618 |
|
restartFromHead: for (;;) { |
619 |
|
for (Node h = head, p = h; p != null;) { // find & match first node |
620 |
< |
boolean isData = p.isData; |
621 |
< |
Object item = p.item; |
622 |
< |
if ((item != null) == isData) { // unmatched |
620 |
> |
final boolean isData; |
621 |
> |
final Object item; |
622 |
> |
if (((item = p.item) != null) == (isData = p.isData)) { |
623 |
> |
// unmatched |
624 |
|
if (isData == haveData) // can't match |
625 |
|
break; |
626 |
|
if (p.casItem(item, e)) { // match |
710 |
|
ThreadLocalRandom randomYields = null; // bound if needed |
711 |
|
|
712 |
|
for (;;) { |
713 |
< |
Object item = s.item; |
714 |
< |
if (item != e) { // matched |
713 |
> |
final Object item; |
714 |
> |
if ((item = s.item) != e) { // matched |
715 |
|
// assert item != s; |
716 |
|
s.forgetContents(); // avoid garbage |
717 |
|
@SuppressWarnings("unchecked") E itemE = (E) item; |