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

Comparing jsr166/src/main/java/util/ArrayDeque.java (file contents):
Revision 1.119 by jsr166, Sun Nov 20 08:30:56 2016 UTC vs.
Revision 1.122 by jsr166, Sat Nov 26 14:13:32 2016 UTC

# Line 710 | Line 710 | public class ArrayDeque<E> extends Abstr
710                  throw new NoSuchElementException();
711              final Object[] es = elements;
712              E e = nonNullElementAt(es, cursor);
713 <            lastRet = cursor;
714 <            cursor = inc(cursor, es.length);
713 >            cursor = inc(lastRet = cursor, es.length);
714              remaining--;
715              return e;
716          }
# Line 864 | Line 863 | public class ArrayDeque<E> extends Abstr
863          }
864  
865          public boolean tryAdvance(Consumer<? super E> action) {
866 <            if (action == null)
868 <                throw new NullPointerException();
869 <            final int t, i;
870 <            if ((t = getFence()) == (i = cursor))
871 <                return false;
866 >            Objects.requireNonNull(action);
867              final Object[] es = elements;
868 +            if (fence < 0) { fence = tail; cursor = head; } // late-binding
869 +            final int i;
870 +            if ((i = cursor) == fence)
871 +                return false;
872 +            E e = nonNullElementAt(es, i);
873              cursor = inc(i, es.length);
874 <            action.accept(nonNullElementAt(es, i));
874 >            action.accept(e);
875              return true;
876          }
877  
# Line 1106 | Line 1106 | public class ArrayDeque<E> extends Abstr
1106          final T[] a;
1107          final int head = this.head, tail = this.tail, end;
1108          if ((end = tail + ((head <= tail) ? 0 : es.length)) >= 0) {
1109 +            // Uses null extension feature of copyOfRange
1110              a = Arrays.copyOfRange(es, head, end, klazz);
1111          } else {
1112              // integer overflow!

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines