| Index: third_party/protobuf/java/core/src/main/java/com/google/protobuf/IntArrayList.java
|
| diff --git a/third_party/protobuf/java/core/src/main/java/com/google/protobuf/IntArrayList.java b/third_party/protobuf/java/core/src/main/java/com/google/protobuf/IntArrayList.java
|
| index 6d6ece5a284bfcb8e32adc6b45bf7ba9ac27effc..2f526e3fd8e1bed817ad2baf9c4e8e7cbde3e7b2 100644
|
| --- a/third_party/protobuf/java/core/src/main/java/com/google/protobuf/IntArrayList.java
|
| +++ b/third_party/protobuf/java/core/src/main/java/com/google/protobuf/IntArrayList.java
|
| @@ -38,25 +38,27 @@ import java.util.RandomAccess;
|
|
|
| /**
|
| * An implementation of {@link IntList} on top of a primitive array.
|
| - *
|
| + *
|
| * @author dweis@google.com (Daniel Weis)
|
| */
|
| -final class IntArrayList extends AbstractProtobufList<Integer> implements IntList, RandomAccess {
|
| -
|
| +final class IntArrayList
|
| + extends AbstractProtobufList<Integer>
|
| + implements IntList, RandomAccess {
|
| +
|
| private static final IntArrayList EMPTY_LIST = new IntArrayList();
|
| static {
|
| EMPTY_LIST.makeImmutable();
|
| }
|
| -
|
| +
|
| public static IntArrayList emptyList() {
|
| return EMPTY_LIST;
|
| }
|
| -
|
| +
|
| /**
|
| * The backing store for the list.
|
| */
|
| private int[] array;
|
| -
|
| +
|
| /**
|
| * The size of the list distinct from the length of the array. That is, it is the number of
|
| * elements set in the list.
|
| @@ -71,13 +73,14 @@ final class IntArrayList extends AbstractProtobufList<Integer> implements IntLis
|
| }
|
|
|
| /**
|
| - * Constructs a new mutable {@code IntArrayList} containing the same elements as {@code other}.
|
| + * Constructs a new mutable {@code IntArrayList}
|
| + * containing the same elements as {@code other}.
|
| */
|
| - private IntArrayList(int[] array, int size) {
|
| - this.array = array;
|
| + private IntArrayList(int[] other, int size) {
|
| + array = other;
|
| this.size = size;
|
| }
|
| -
|
| +
|
| @Override
|
| public boolean equals(Object o) {
|
| if (this == o) {
|
| @@ -90,14 +93,14 @@ final class IntArrayList extends AbstractProtobufList<Integer> implements IntLis
|
| if (size != other.size) {
|
| return false;
|
| }
|
| -
|
| +
|
| final int[] arr = other.array;
|
| for (int i = 0; i < size; i++) {
|
| if (array[i] != arr[i]) {
|
| return false;
|
| }
|
| }
|
| -
|
| +
|
| return true;
|
| }
|
|
|
| @@ -117,7 +120,7 @@ final class IntArrayList extends AbstractProtobufList<Integer> implements IntLis
|
| }
|
| return new IntArrayList(Arrays.copyOf(array, capacity), size);
|
| }
|
| -
|
| +
|
| @Override
|
| public Integer get(int index) {
|
| return getInt(index);
|
| @@ -169,7 +172,7 @@ final class IntArrayList extends AbstractProtobufList<Integer> implements IntLis
|
| if (index < 0 || index > size) {
|
| throw new IndexOutOfBoundsException(makeOutOfBoundsExceptionMessage(index));
|
| }
|
| -
|
| +
|
| if (size < array.length) {
|
| // Shift everything over to make room
|
| System.arraycopy(array, index, array, index + 1, size - index);
|
| @@ -177,10 +180,10 @@ final class IntArrayList extends AbstractProtobufList<Integer> implements IntLis
|
| // Resize to 1.5x the size
|
| int length = ((size * 3) / 2) + 1;
|
| int[] newArray = new int[length];
|
| -
|
| +
|
| // Copy the first part directly
|
| System.arraycopy(array, 0, newArray, 0, index);
|
| -
|
| +
|
| // Copy the rest shifted over by one to make room
|
| System.arraycopy(array, index, newArray, index + 1, size - index);
|
| array = newArray;
|
| @@ -194,38 +197,38 @@ final class IntArrayList extends AbstractProtobufList<Integer> implements IntLis
|
| @Override
|
| public boolean addAll(Collection<? extends Integer> collection) {
|
| ensureIsMutable();
|
| -
|
| +
|
| if (collection == null) {
|
| throw new NullPointerException();
|
| }
|
| -
|
| +
|
| // We specialize when adding another IntArrayList to avoid boxing elements.
|
| if (!(collection instanceof IntArrayList)) {
|
| return super.addAll(collection);
|
| }
|
| -
|
| +
|
| IntArrayList list = (IntArrayList) collection;
|
| if (list.size == 0) {
|
| return false;
|
| }
|
| -
|
| +
|
| int overflow = Integer.MAX_VALUE - size;
|
| if (overflow < list.size) {
|
| // We can't actually represent a list this large.
|
| throw new OutOfMemoryError();
|
| }
|
| -
|
| +
|
| int newSize = size + list.size;
|
| if (newSize > array.length) {
|
| array = Arrays.copyOf(array, newSize);
|
| }
|
| -
|
| +
|
| System.arraycopy(list.array, 0, array, size, list.size);
|
| size = newSize;
|
| modCount++;
|
| return true;
|
| }
|
| -
|
| +
|
| @Override
|
| public boolean remove(Object o) {
|
| ensureIsMutable();
|
| @@ -254,7 +257,7 @@ final class IntArrayList extends AbstractProtobufList<Integer> implements IntLis
|
| /**
|
| * Ensures that the provided {@code index} is within the range of {@code [0, size]}. Throws an
|
| * {@link IndexOutOfBoundsException} if it is not.
|
| - *
|
| + *
|
| * @param index the index to verify is in range
|
| */
|
| private void ensureIndexInRange(int index) {
|
|
|