Change return type of `keys` in `PackageValue` to `ImmutableList`.
PiperOrigin-RevId: 439347909
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PackageValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/PackageValue.java
index 0172abb..1918e83 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/PackageValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/PackageValue.java
@@ -14,6 +14,7 @@
package com.google.devtools.build.lib.skyframe;
import com.google.common.base.Preconditions;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.Interner;
import com.google.devtools.build.lib.cmdline.PackageIdentifier;
import com.google.devtools.build.lib.concurrent.BlazeInterners;
@@ -26,8 +27,7 @@
import com.google.devtools.build.skyframe.NotComparableSkyValue;
import com.google.devtools.build.skyframe.SkyFunctionName;
import com.google.devtools.build.skyframe.SkyKey;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.Collection;
/** A Skyframe value representing a package. */
@AutoCodec(explicitlyAllowClass = Package.class)
@@ -82,11 +82,14 @@
}
}
- public static List<SkyKey> keys(Iterable<PackageIdentifier> pkgIdentifiers) {
- List<SkyKey> keys = new ArrayList<>();
+ public static ImmutableList<SkyKey> keys(Iterable<PackageIdentifier> pkgIdentifiers) {
+ ImmutableList.Builder<SkyKey> keys =
+ (pkgIdentifiers instanceof Collection)
+ ? ImmutableList.builderWithExpectedSize(((Collection) pkgIdentifiers).size())
+ : ImmutableList.builder();
for (PackageIdentifier pkgIdentifier : pkgIdentifiers) {
keys.add(key(pkgIdentifier));
}
- return keys;
+ return keys.build();
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TestExpansionFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/TestExpansionFunction.java
index 276c7e5..9a0422c 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/TestExpansionFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/TestExpansionFunction.java
@@ -13,6 +13,7 @@
// limitations under the License.
package com.google.devtools.build.lib.skyframe;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.cmdline.PackageIdentifier;
@@ -154,7 +155,7 @@
labels.add(label);
pkgIdentifiers.add(label.getPackageIdentifier());
});
- List<SkyKey> skyKeys = PackageValue.keys(pkgIdentifiers);
+ ImmutableList<SkyKey> skyKeys = PackageValue.keys(pkgIdentifiers);
SkyframeIterableResult packages = env.getOrderedValuesAndExceptions(skyKeys);
if (env.valuesMissing()) {
return false;