From 8f203c48cbbfe47569d8101a12a8fc9384e09674 Mon Sep 17 00:00:00 2001 From: lowasser Date: Mon, 31 Jul 2017 11:23:01 -0700 Subject: [PATCH] Avoid importing ImmutableList from Ordering. Effects on OrderingProGuard ([]79684 bytes => 64945 bytes 28 classes => 15 classes 215 methods => 124 methods ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=163721091 --- .../common/collect/CompoundOrdering.java | 19 +++++++++---------- .../com/google/common/collect/Ordering.java | 5 +---- ...ompoundOrdering_CustomFieldSerializer.java | 14 ++++++++++++-- .../common/collect/CompoundOrdering.java | 19 +++++++++---------- .../com/google/common/collect/Ordering.java | 5 +---- 5 files changed, 32 insertions(+), 30 deletions(-) diff --git a/android/guava/src/com/google/common/collect/CompoundOrdering.java b/android/guava/src/com/google/common/collect/CompoundOrdering.java index 3272a4374ed1..e803acb4fbb7 100644 --- a/android/guava/src/com/google/common/collect/CompoundOrdering.java +++ b/android/guava/src/com/google/common/collect/CompoundOrdering.java @@ -18,27 +18,26 @@ import com.google.common.annotations.GwtCompatible; import java.io.Serializable; +import java.util.Arrays; import java.util.Comparator; /** An ordering that tries several comparators in order. */ @GwtCompatible(serializable = true) final class CompoundOrdering extends Ordering implements Serializable { - final ImmutableList> comparators; + final Comparator[] comparators; CompoundOrdering(Comparator primary, Comparator secondary) { - this.comparators = ImmutableList.>of(primary, secondary); + this.comparators = (Comparator[]) new Comparator[] {primary, secondary}; } CompoundOrdering(Iterable> comparators) { - this.comparators = ImmutableList.copyOf(comparators); + this.comparators = Iterables.toArray(comparators, new Comparator[0]); } @Override public int compare(T left, T right) { - // Avoid using the Iterator to avoid generating garbage (issue 979). - int size = comparators.size(); - for (int i = 0; i < size; i++) { - int result = comparators.get(i).compare(left, right); + for (int i = 0; i < comparators.length; i++) { + int result = comparators[i].compare(left, right); if (result != 0) { return result; } @@ -53,19 +52,19 @@ public boolean equals(Object object) { } if (object instanceof CompoundOrdering) { CompoundOrdering that = (CompoundOrdering) object; - return this.comparators.equals(that.comparators); + return Arrays.equals(this.comparators, that.comparators); } return false; } @Override public int hashCode() { - return comparators.hashCode(); + return Arrays.hashCode(comparators); } @Override public String toString() { - return "Ordering.compound(" + comparators + ")"; + return "Ordering.compound(" + Arrays.toString(comparators) + ")"; } private static final long serialVersionUID = 0; diff --git a/android/guava/src/com/google/common/collect/Ordering.java b/android/guava/src/com/google/common/collect/Ordering.java index ecda78ec0b8e..78ca3374e182 100644 --- a/android/guava/src/com/google/common/collect/Ordering.java +++ b/android/guava/src/com/google/common/collect/Ordering.java @@ -28,14 +28,11 @@ import java.util.Collection; import java.util.Collections; import java.util.Comparator; -import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.NoSuchElementException; import java.util.SortedMap; -import java.util.SortedSet; -import java.util.TreeSet; import java.util.concurrent.ConcurrentMap; import java.util.concurrent.atomic.AtomicInteger; import javax.annotation.Nullable; @@ -772,7 +769,7 @@ public List leastOf(Iterator iterator, int k) { checkNonnegative(k, "k"); if (k == 0 || !iterator.hasNext()) { - return ImmutableList.of(); + return Collections.emptyList(); } else if (k >= Integer.MAX_VALUE / 2) { // k is really large; just do a straightforward sorted-copy-and-sublist ArrayList list = Lists.newArrayList(iterator); diff --git a/guava-gwt/src/com/google/common/collect/CompoundOrdering_CustomFieldSerializer.java b/guava-gwt/src/com/google/common/collect/CompoundOrdering_CustomFieldSerializer.java index ba62c1b02d39..4537a3da1a6d 100644 --- a/guava-gwt/src/com/google/common/collect/CompoundOrdering_CustomFieldSerializer.java +++ b/guava-gwt/src/com/google/common/collect/CompoundOrdering_CustomFieldSerializer.java @@ -19,7 +19,9 @@ import com.google.gwt.user.client.rpc.SerializationException; import com.google.gwt.user.client.rpc.SerializationStreamReader; import com.google.gwt.user.client.rpc.SerializationStreamWriter; +import java.util.ArrayList; import java.util.Comparator; +import java.util.List; /** * This class implements the GWT serialization of {@link CompoundOrdering}. @@ -33,11 +35,19 @@ public static void deserialize(SerializationStreamReader reader, CompoundOrderin @SuppressWarnings("unchecked") // deserialization is unsafe public static CompoundOrdering instantiate(SerializationStreamReader reader) throws SerializationException { - return new CompoundOrdering((ImmutableList>) reader.readObject()); + int n = reader.readInt(); + List> comparators = new ArrayList<>(n); + for (int i = 0; i < n; i++) { + comparators.add((Comparator) reader.readObject()); + } + return new CompoundOrdering(comparators); } public static void serialize(SerializationStreamWriter writer, CompoundOrdering instance) throws SerializationException { - writer.writeObject(instance.comparators); + writer.writeInt(instance.comparators.length); + for (Comparator comparator : instance.comparators) { + writer.writeObject(comparator); + } } } diff --git a/guava/src/com/google/common/collect/CompoundOrdering.java b/guava/src/com/google/common/collect/CompoundOrdering.java index 3272a4374ed1..e803acb4fbb7 100644 --- a/guava/src/com/google/common/collect/CompoundOrdering.java +++ b/guava/src/com/google/common/collect/CompoundOrdering.java @@ -18,27 +18,26 @@ import com.google.common.annotations.GwtCompatible; import java.io.Serializable; +import java.util.Arrays; import java.util.Comparator; /** An ordering that tries several comparators in order. */ @GwtCompatible(serializable = true) final class CompoundOrdering extends Ordering implements Serializable { - final ImmutableList> comparators; + final Comparator[] comparators; CompoundOrdering(Comparator primary, Comparator secondary) { - this.comparators = ImmutableList.>of(primary, secondary); + this.comparators = (Comparator[]) new Comparator[] {primary, secondary}; } CompoundOrdering(Iterable> comparators) { - this.comparators = ImmutableList.copyOf(comparators); + this.comparators = Iterables.toArray(comparators, new Comparator[0]); } @Override public int compare(T left, T right) { - // Avoid using the Iterator to avoid generating garbage (issue 979). - int size = comparators.size(); - for (int i = 0; i < size; i++) { - int result = comparators.get(i).compare(left, right); + for (int i = 0; i < comparators.length; i++) { + int result = comparators[i].compare(left, right); if (result != 0) { return result; } @@ -53,19 +52,19 @@ public boolean equals(Object object) { } if (object instanceof CompoundOrdering) { CompoundOrdering that = (CompoundOrdering) object; - return this.comparators.equals(that.comparators); + return Arrays.equals(this.comparators, that.comparators); } return false; } @Override public int hashCode() { - return comparators.hashCode(); + return Arrays.hashCode(comparators); } @Override public String toString() { - return "Ordering.compound(" + comparators + ")"; + return "Ordering.compound(" + Arrays.toString(comparators) + ")"; } private static final long serialVersionUID = 0; diff --git a/guava/src/com/google/common/collect/Ordering.java b/guava/src/com/google/common/collect/Ordering.java index c5d983f0ba16..0c30cf1f8215 100644 --- a/guava/src/com/google/common/collect/Ordering.java +++ b/guava/src/com/google/common/collect/Ordering.java @@ -28,14 +28,11 @@ import java.util.Collection; import java.util.Collections; import java.util.Comparator; -import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.NoSuchElementException; import java.util.SortedMap; -import java.util.SortedSet; -import java.util.TreeSet; import java.util.concurrent.ConcurrentMap; import java.util.concurrent.atomic.AtomicInteger; import javax.annotation.Nullable; @@ -772,7 +769,7 @@ public List leastOf(Iterator iterator, int k) { checkNonnegative(k, "k"); if (k == 0 || !iterator.hasNext()) { - return ImmutableList.of(); + return Collections.emptyList(); } else if (k >= Integer.MAX_VALUE / 2) { // k is really large; just do a straightforward sorted-copy-and-sublist ArrayList list = Lists.newArrayList(iterator);