From 7574d84e61086b5835a2b2cc003ca72fcfcf4fe4 Mon Sep 17 00:00:00 2001 From: janakr Date: Tue, 14 Aug 2018 21:38:51 -0700 Subject: Filter out events from analysis when constructing execution-phase values in Skyframe. This avoids some unnecessary iteration over already-emitted events that can show up in profiles, and allows us to store execution-phase values a bit more compactly, since we don't need to carry around wrapper objects and nested sets everywhere. This crucially depends on the fact that we can't build a target in the execution phase without first having analyzed it in a separate Skyframe call. Skyframe normally propagates all events/posts up the graph because it must be able to emit them if a user requests a node that only transitively depends on the node that emitted an event. However, because we do analysis in a separate Skyframe call, any warnings/posts associated with the analysis nodes will be emitted then, and we don't need to propagate them into execution. PiperOrigin-RevId: 208767078 --- .../devtools/build/lib/skyframe/packages/AbstractPackageLoader.java | 1 + 1 file changed, 1 insertion(+) (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java') diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java b/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java index 242a5ac66e..9fad67e516 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java @@ -342,6 +342,7 @@ public abstract class AbstractPackageLoader implements PackageLoader { preinjectedDifferencer, new EvaluationProgressReceiver.NullEvaluationProgressReceiver(), GraphInconsistencyReceiver.THROWING, + InMemoryMemoizingEvaluator.DEFAULT_STORED_EVENT_FILTER, new MemoizingEvaluator.EmittedEventState(), /*keepEdges=*/ false)); } -- cgit v1.2.3