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.89 by jsr166, Mon Oct 24 23:40:56 2016 UTC vs.
Revision 1.90 by jsr166, Tue Oct 25 03:13:56 2016 UTC

# Line 436 | Line 436 | public class ArrayDeque<E> extends Abstr
436          if (o != null) {
437              final Object[] elements = this.elements;
438              final int capacity = elements.length;
439 <            int from, end, to, leftover;
440 <            leftover = (end = (from = head) + size)
439 >            int from, end, to, todo;
440 >            todo = (end = (from = head) + size)
441                  - (to = (capacity - end >= 0) ? end : capacity);
442 <            for (;; from = 0, to = leftover, leftover = 0) {
442 >            for (;; from = 0, to = todo, todo = 0) {
443                  for (int i = from; i < to; i++)
444                      if (o.equals(elements[i])) {
445                          delete(i);
446                          return true;
447                      }
448 <                if (leftover == 0) break;
448 >                if (todo == 0) break;
449              }
450          }
451          return false;
# Line 467 | Line 467 | public class ArrayDeque<E> extends Abstr
467          if (o != null) {
468              final Object[] elements = this.elements;
469              final int capacity = elements.length;
470 <            int from, to, end, leftover;
471 <            leftover = (to = ((end = (from = tail()) - size) >= -1) ? end : -1) - end;
472 <            for (;; from = capacity - 1, to = capacity - 1 - leftover, leftover = 0) {
470 >            int from, to, end, todo;
471 >            todo = (to = ((end = (from = tail()) - size) >= -1) ? end : -1) - end;
472 >            for (;; from = capacity - 1, to = capacity - 1 - todo, todo = 0) {
473                  for (int i = from; i > to; i--)
474                      if (o.equals(elements[i])) {
475                          delete(i);
476                          return true;
477                      }
478 <                if (leftover == 0) break;
478 >                if (todo == 0) break;
479              }
480          }
481          return false;
# Line 849 | Line 849 | public class ArrayDeque<E> extends Abstr
849          Objects.requireNonNull(action);
850          final Object[] elements = this.elements;
851          final int capacity = elements.length;
852 <        int from, end, to, leftover;
853 <        leftover = (end = (from = head) + size)
852 >        int from, end, to, todo;
853 >        todo = (end = (from = head) + size)
854              - (to = (capacity - end >= 0) ? end : capacity);
855 <        for (;; from = 0, to = leftover, leftover = 0) {
855 >        for (;; from = 0, to = todo, todo = 0) {
856              for (int i = from; i < to; i++)
857                  action.accept((E) elements[i]);
858 <            if (leftover == 0) break;
858 >            if (todo == 0) break;
859          }
860          // checkInvariants();
861      }
# Line 865 | Line 865 | public class ArrayDeque<E> extends Abstr
865       * modification, for use in iterators.
866       */
867      static <E> void forEachRemaining(
868 <        Consumer<? super E> action, Object[] elements, int from, int size) {
868 >        Consumer<? super E> action, Object[] elements, int from, int remaining) {
869          Objects.requireNonNull(action);
870          final int capacity = elements.length;
871 <        int end, to, leftover;
872 <        leftover = (end = from + size)
871 >        int end, to, todo;
872 >        todo = (end = from + remaining)
873              - (to = (capacity - end >= 0) ? end : capacity);
874 <        for (;; from = 0, to = leftover, leftover = 0) {
874 >        for (;; from = 0, to = todo, todo = 0) {
875              for (int i = from; i < to; i++) {
876                  @SuppressWarnings("unchecked") E e = (E) elements[i];
877                  if (e == null)
878                      throw new ConcurrentModificationException();
879                  action.accept(e);
880              }
881 <            if (leftover == 0) break;
881 >            if (todo == 0) break;
882          }
883      }
884  
885      static <E> void forEachRemainingDescending(
886 <        Consumer<? super E> action, Object[] elements, int from, int size) {
886 >        Consumer<? super E> action, Object[] elements, int from, int remaining) {
887          Objects.requireNonNull(action);
888          final int capacity = elements.length;
889 <        int end, to, leftover;
890 <        leftover = (to = ((end = from - size) >= -1) ? end : -1) - end;
891 <        for (;; from = capacity - 1, to = capacity - 1 - leftover, leftover = 0) {
889 >        int end, to, todo;
890 >        todo = (to = ((end = from - remaining) >= -1) ? end : -1) - end;
891 >        for (;; from = capacity - 1, to = capacity - 1 - todo, todo = 0) {
892              for (int i = from; i > to; i--) {
893                  @SuppressWarnings("unchecked") E e = (E) elements[i];
894                  if (e == null)
895                      throw new ConcurrentModificationException();
896                  action.accept(e);
897              }
898 <            if (leftover == 0) break;
898 >            if (todo == 0) break;
899          }
900      }
901  
# Line 910 | Line 910 | public class ArrayDeque<E> extends Abstr
910          Objects.requireNonNull(operator);
911          final Object[] elements = this.elements;
912          final int capacity = elements.length;
913 <        int from, end, to, leftover;
914 <        leftover = (end = (from = head) + size)
913 >        int from, end, to, todo;
914 >        todo = (end = (from = head) + size)
915              - (to = (capacity - end >= 0) ? end : capacity);
916 <        for (;; from = 0, to = leftover, leftover = 0) {
916 >        for (;; from = 0, to = todo, todo = 0) {
917              for (int i = from; i < to; i++)
918                  elements[i] = operator.apply(elementAt(i));
919 <            if (leftover == 0) break;
919 >            if (todo == 0) break;
920          }
921          // checkInvariants();
922      }
# Line 991 | Line 991 | public class ArrayDeque<E> extends Abstr
991          if (o != null) {
992              final Object[] elements = this.elements;
993              final int capacity = elements.length;
994 <            int from, end, to, leftover;
995 <            leftover = (end = (from = head) + size)
994 >            int from, end, to, todo;
995 >            todo = (end = (from = head) + size)
996                  - (to = (capacity - end >= 0) ? end : capacity);
997 <            for (;; from = 0, to = leftover, leftover = 0) {
997 >            for (;; from = 0, to = todo, todo = 0) {
998                  for (int i = from; i < to; i++)
999                      if (o.equals(elements[i]))
1000                          return true;
1001 <                if (leftover == 0) break;
1001 >                if (todo == 0) break;
1002              }
1003          }
1004          return false;
# Line 1032 | Line 1032 | public class ArrayDeque<E> extends Abstr
1032      }
1033  
1034      /**
1035 <     * Nulls out size elements, starting at head.
1035 >     * Nulls out count elements, starting at array index from.
1036       */
1037 <    private static void clearSlice(Object[] elements, int head, int size) {
1038 <        final int capacity = elements.length, end = head + size;
1037 >    private static void clearSlice(Object[] elements, int from, int count) {
1038 >        final int capacity = elements.length, end = from + count;
1039          final int leg = (capacity - end >= 0) ? end : capacity;
1040 <        Arrays.fill(elements, head, leg, null);
1040 >        Arrays.fill(elements, from, leg, null);
1041          if (leg != end)
1042              Arrays.fill(elements, 0, end - capacity, null);
1043      }
# Line 1168 | Line 1168 | public class ArrayDeque<E> extends Abstr
1168          // Write out elements in order.
1169          final Object[] elements = this.elements;
1170          final int capacity = elements.length;
1171 <        int from, end, to, leftover;
1172 <        leftover = (end = (from = head) + size)
1171 >        int from, end, to, todo;
1172 >        todo = (end = (from = head) + size)
1173              - (to = (capacity - end >= 0) ? end : capacity);
1174 <        for (;; from = 0, to = leftover, leftover = 0) {
1174 >        for (;; from = 0, to = todo, todo = 0) {
1175              for (int i = from; i < to; i++)
1176                  s.writeObject(elements[i]);
1177 <            if (leftover == 0) break;
1177 >            if (todo == 0) break;
1178          }
1179      }
1180  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines