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

Comparing jsr166/src/jsr166y/LinkedTransferQueue.java (file contents):
Revision 1.78 by dl, Thu Sep 9 16:52:49 2010 UTC vs.
Revision 1.79 by dl, Fri Sep 10 10:43:23 2010 UTC

# Line 882 | Line 882 | public class LinkedTransferQueue<E> exte
882       */
883      private void sweep() {
884          for (Node p = head, s, n; p != null && (s = p.next) != null; ) {
885 <            if (p == s)                    // stale
886 <                p = head;
887 <            else if (!s.isMatched())
885 >            if (!s.isMatched())
886 >                // Unmatched nodes are never self-linked
887                  p = s;
888 <            else if ((n = s.next) == null || s == n) // trailing node is pinned
888 >            else if ((n = s.next) == null) // trailing node is pinned
889                  break;
890 +            else if (s == n)    // stale
891 +                // No need to also check for p == s, since that implies s == n
892 +                p = head;
893              else
894                  p.casNext(s, n);
895          }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines