From d64a2d9941c36a7bc2a7959ea10ab8363192ac14 Mon Sep 17 00:00:00 2001 From: Adam Cozzette Date: Wed, 29 Jun 2016 15:23:27 -0700 Subject: Integrated internal changes from Google This includes all internal changes from around May 20 to now. --- .../java/com/google/protobuf/LongArrayList.java | 53 ++++++++++++---------- 1 file changed, 28 insertions(+), 25 deletions(-) (limited to 'java/core/src/main/java/com/google/protobuf/LongArrayList.java') diff --git a/java/core/src/main/java/com/google/protobuf/LongArrayList.java b/java/core/src/main/java/com/google/protobuf/LongArrayList.java index bc4475d1..5a772e3a 100644 --- a/java/core/src/main/java/com/google/protobuf/LongArrayList.java +++ b/java/core/src/main/java/com/google/protobuf/LongArrayList.java @@ -38,25 +38,27 @@ import java.util.RandomAccess; /** * An implementation of {@link LongList} on top of a primitive array. - * + * * @author dweis@google.com (Daniel Weis) */ -final class LongArrayList extends AbstractProtobufList implements LongList, RandomAccess { - +final class LongArrayList + extends AbstractProtobufList + implements LongList, RandomAccess { + private static final LongArrayList EMPTY_LIST = new LongArrayList(); static { EMPTY_LIST.makeImmutable(); } - + public static LongArrayList emptyList() { return EMPTY_LIST; } - + /** * The backing store for the list. */ private long[] 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,33 +73,34 @@ final class LongArrayList extends AbstractProtobufList implements LongList } /** - * Constructs a new mutable {@code LongArrayList} containing the same elements as {@code other}. + * Constructs a new mutable {@code LongArrayList} + * containing the same elements as {@code other}. */ - private LongArrayList(long[] array, int size) { - this.array = array; + private LongArrayList(long[] other, int size) { + array = other; this.size = size; } - + @Override public boolean equals(Object o) { if (this == o) { return true; } - if (!(o instanceof IntArrayList)) { + if (!(o instanceof LongArrayList)) { return super.equals(o); } LongArrayList other = (LongArrayList) o; if (size != other.size) { return false; } - + final long[] 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 LongArrayList extends AbstractProtobufList implements LongList } return new LongArrayList(Arrays.copyOf(array, capacity), size); } - + @Override public Long get(int index) { return getLong(index); @@ -169,7 +172,7 @@ final class LongArrayList extends AbstractProtobufList implements LongList 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 LongArrayList extends AbstractProtobufList implements LongList // Resize to 1.5x the size int length = ((size * 3) / 2) + 1; long[] newArray = new long[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 LongArrayList extends AbstractProtobufList implements LongList @Override public boolean addAll(Collection collection) { ensureIsMutable(); - + if (collection == null) { throw new NullPointerException(); } - + // We specialize when adding another LongArrayList to avoid boxing elements. if (!(collection instanceof LongArrayList)) { return super.addAll(collection); } - + LongArrayList list = (LongArrayList) 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 LongArrayList extends AbstractProtobufList implements LongList /** * 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) { -- cgit v1.2.3