ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/main/java/util/concurrent/LinkedTransferQueue.java
(Generate patch)

Comparing jsr166/src/main/java/util/concurrent/LinkedTransferQueue.java (file contents):
Revision 1.140 by jsr166, Sat Jan 14 06:59:57 2017 UTC vs.
Revision 1.141 by jsr166, Sat Jan 14 21:14:47 2017 UTC

# Line 617 | Line 617 | public class LinkedTransferQueue<E> exte
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
# Line 709 | Line 710 | public class LinkedTransferQueue<E> exte
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;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines