Don't memoize the artifacts to owners supplier since it is only used in one place, and memoizing holds a reference to the result longer than necessary.
PiperOrigin-RevId: 259079198
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java b/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java
index 980f015..cba1ec4 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java
@@ -18,7 +18,6 @@
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Predicate;
import com.google.common.base.Stopwatch;
-import com.google.common.base.Suppliers;
import com.google.common.base.Throwables;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
@@ -335,10 +334,11 @@
Profiler.instance().profile(actionContextProvider + ".executionPhaseStarting")) {
actionContextProvider.executionPhaseStarting(
actionGraph,
- Suppliers.memoize(
- () ->
- TopLevelArtifactHelper.makeTopLevelArtifactsToOwnerLabels(
- analysisResult, aspects)));
+ // If this supplier is ever consumed by more than one ActionContextProvider, it can be
+ // pulled out of the loop and made a memoizing supplier.
+ () ->
+ TopLevelArtifactHelper.makeTopLevelArtifactsToOwnerLabels(
+ analysisResult, aspects));
}
}
skyframeExecutor.drainChangedFiles();