--- jsr166/src/jsr166y/LinkedTransferQueue.java 2009/08/01 21:24:01 1.43 +++ jsr166/src/jsr166y/LinkedTransferQueue.java 2009/08/04 20:32:16 1.44 @@ -219,7 +219,7 @@ public class LinkedTransferQueue exte Node t = tail.get(); Node h = head.get(); - if (t != null && (t == h || t.isData == isData)) { + if (t == h || t.isData == isData) { if (s == null) s = new Node(e, isData); Node last = t.next; @@ -231,9 +231,7 @@ public class LinkedTransferQueue exte tail.compareAndSet(t, s); return awaitFulfill(t, s, e, mode, nanos); } - } - - else if (h != null) { + } else { Node first = h.next; if (t == tail.get() && first != null && advanceHead(h, first)) { @@ -261,7 +259,7 @@ public class LinkedTransferQueue exte Node t = tail.get(); Node h = head.get(); - if (t != null && (t == h || t.isData == isData)) { + if (t == h || t.isData == isData) { Node last = t.next; if (t == tail.get()) { if (last != null) @@ -269,8 +267,7 @@ public class LinkedTransferQueue exte else return null; } - } - else if (h != null) { + } else { Node first = h.next; if (t == tail.get() && first != null && @@ -332,9 +329,9 @@ public class LinkedTransferQueue exte } if (spins < 0) { Node h = head.get(); // only spin if at head - spins = ((h != null && h.next == s) ? - ((mode == TIMEOUT) ? - maxTimedSpins : maxUntimedSpins) : 0); + spins = ((h.next != s) ? 0 : + (mode == TIMEOUT) ? maxTimedSpins : + maxUntimedSpins); } if (spins > 0) --spins; @@ -643,22 +640,20 @@ public class LinkedTransferQueue exte for (;;) { Node t = tail.get(); Node h = head.get(); - if (h != null && t != null) { - Node last = t.next; - Node first = h.next; - if (t == tail.get()) { - if (last != null) - tail.compareAndSet(t, last); - else if (first != null) { - Object x = first.get(); - if (x == first) - advanceHead(h, first); - else - return h; - } + Node last = t.next; + Node first = h.next; + if (t == tail.get()) { + if (last != null) + tail.compareAndSet(t, last); + else if (first != null) { + Object x = first.get(); + if (x == first) + advanceHead(h, first); else return h; } + else + return h; } reclean(); }