--- jsr166/src/main/java/util/ArrayDeque.java 2017/05/31 19:01:08 1.129 +++ jsr166/src/main/java/util/ArrayDeque.java 2017/10/22 17:44:02 1.132 @@ -9,6 +9,7 @@ import java.io.Serializable; import java.util.function.Consumer; import java.util.function.Predicate; import java.util.function.UnaryOperator; +import jdk.internal.misc.SharedSecrets; /** * Resizable-array implementation of the {@link Deque} interface. Array @@ -212,7 +213,7 @@ public class ArrayDeque extends Abstr } /** - * Increments i, mod modulus. + * Circularly increments i, mod modulus. * Precondition and postcondition: 0 <= i < modulus. */ static final int inc(int i, int modulus) { @@ -221,7 +222,7 @@ public class ArrayDeque extends Abstr } /** - * Decrements i, mod modulus. + * Circularly decrements i, mod modulus. * Precondition and postcondition: 0 <= i < modulus. */ static final int dec(int i, int modulus) { @@ -234,7 +235,7 @@ public class ArrayDeque extends Abstr * Precondition: 0 <= i < modulus, 0 <= distance <= modulus. * @return index 0 <= i < modulus */ - static final int add(int i, int distance, int modulus) { + static final int inc(int i, int distance, int modulus) { if ((i += distance) - modulus >= 0) i -= modulus; return i; } @@ -244,7 +245,7 @@ public class ArrayDeque extends Abstr * Index i must be logically ahead of index j. * Precondition: 0 <= i < modulus, 0 <= j < modulus. * @return the "circular distance" from j to i; corner case i == j - * is diambiguated to "empty", returning 0. + * is disambiguated to "empty", returning 0. */ static final int sub(int i, int j, int modulus) { if ((i -= j) < 0) i += modulus; @@ -840,7 +841,7 @@ public class ArrayDeque extends Abstr final int i, n; return ((n = sub(getFence(), i = cursor, es.length) >> 1) <= 0) ? null - : new DeqSpliterator(i, cursor = add(i, n, es.length)); + : new DeqSpliterator(i, cursor = inc(i, n, es.length)); } public void forEachRemaining(Consumer action) { @@ -1235,6 +1236,7 @@ public class ArrayDeque extends Abstr // Read in size and allocate array int size = s.readInt(); + SharedSecrets.getJavaObjectInputStreamAccess().checkArray(s, Object[].class, size + 1); elements = new Object[size + 1]; this.tail = size;