Model the TopLevelArtifactContext as an argument to the CompletionFunction rather than a PRECOMPUTED value.

Having a stale TopLevelArtifactContext leads to invalidation of all the top level target nodes, causing time wasted due to a lot of cache hits for a null build.

--
MOS_MIGRATED_REVID=127585059
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/ActionDataTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/ActionDataTest.java
index 763d1fa..342784c 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/ActionDataTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/ActionDataTest.java
@@ -93,13 +93,15 @@
     Executor executor = new DummyExecutor(scratch.dir("/"));
     amnesiacBuilder()
         .buildArtifacts(
-            reporter, outputs, null, null, null, null, executor, null, /*explain=*/ false, null);
+            reporter, outputs, null, null, null, null, executor, null, /*explain=*/ false, null,
+            null);
     assertSame(executor, action.executor);
 
     executor = new DummyExecutor(scratch.dir("/"));
     amnesiacBuilder()
         .buildArtifacts(
-            reporter, outputs, null, null, null, null, executor, null, /*explain=*/ false, null);
+            reporter, outputs, null, null, null, null, executor, null, /*explain=*/ false, null,
+            null);
     assertSame(executor, action.executor);
   }
 
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeAwareActionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeAwareActionTest.java
index 636dab3..17a273e 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeAwareActionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeAwareActionTest.java
@@ -392,6 +392,7 @@
         executor,
         null,
         false,
+        null,
         null);
 
     // Sanity check that our invalidation receiver is working correctly. We'll rely on it again.
@@ -419,6 +420,7 @@
         executor,
         null,
         false,
+        null,
         null);
 
     if (expectActionIs.dirtied()) {
@@ -789,6 +791,16 @@
         });
 
     builder.buildArtifacts(
-        reporter, ImmutableSet.of(genFile2), null, null, null, null, executor, null, false, null);
+        reporter,
+        ImmutableSet.of(genFile2),
+        null,
+        null,
+        null,
+        null,
+        executor,
+        null,
+        false,
+        null,
+        null);
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java b/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java
index 2c1b7e6..de3984d 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java
@@ -43,6 +43,7 @@
 import com.google.devtools.build.lib.actions.util.TestAction;
 import com.google.devtools.build.lib.analysis.BlazeDirectories;
 import com.google.devtools.build.lib.analysis.ConfiguredTarget;
+import com.google.devtools.build.lib.analysis.TopLevelArtifactContext;
 import com.google.devtools.build.lib.buildtool.SkyframeBuilder;
 import com.google.devtools.build.lib.events.Reporter;
 import com.google.devtools.build.lib.events.StoredEventHandler;
@@ -219,7 +220,8 @@
           Executor executor,
           Set<ConfiguredTarget> builtTargets,
           boolean explain,
-          Range<Long> lastExecutionTimeRange)
+          Range<Long> lastExecutionTimeRange,
+          TopLevelArtifactContext topLevelArtifactContext)
           throws BuildFailedException, AbruptExitException, InterruptedException,
               TestExecException {
         skyframeActionExecutor.prepareForExecution(
@@ -356,6 +358,7 @@
           new DummyExecutor(rootDirectory),
           builtArtifacts, /*explain=*/
           false,
+          null,
           null);
     } finally {
       tsgm.waitForTimestampGranularity(reporter.getOutErr());