aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/skyframe
diff options
context:
space:
mode:
authorGravatar shreyax <shreyax@google.com>2018-04-06 18:00:50 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-04-06 18:02:48 -0700
commit71ee3b23e3a3a7ef11ba400eaface395881d57c8 (patch)
tree12abb2260e9fa385f54e3c5c7b528ea8791c21a8 /src/main/java/com/google/devtools/build/skyframe
parent4a1e76bef02460826772b02fe2d50992810efc2d (diff)
In inlined skylark import lookup function caching, don't actually fetch deps when all we want to do is register an edge and don't require the value.
PiperOrigin-RevId: 191966203
Diffstat (limited to 'src/main/java/com/google/devtools/build/skyframe')
-rw-r--r--src/main/java/com/google/devtools/build/skyframe/SkyFunction.java7
-rw-r--r--src/main/java/com/google/devtools/build/skyframe/SkyFunctionEnvironment.java11
2 files changed, 18 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/skyframe/SkyFunction.java b/src/main/java/com/google/devtools/build/skyframe/SkyFunction.java
index 9b7c29d2e2..527fae3f86 100644
--- a/src/main/java/com/google/devtools/build/skyframe/SkyFunction.java
+++ b/src/main/java/com/google/devtools/build/skyframe/SkyFunction.java
@@ -284,6 +284,13 @@ public interface SkyFunction {
return null;
}
+ /**
+ * Register dependencies on keys without necessarily requiring their values.
+ */
+ default void registerDependencies(Iterable<SkyKey> keys) throws InterruptedException {
+ getValues(keys);
+ }
+
/** Returns whether we are currently in error bubbling. */
@VisibleForTesting
boolean inErrorBubblingForTesting();
diff --git a/src/main/java/com/google/devtools/build/skyframe/SkyFunctionEnvironment.java b/src/main/java/com/google/devtools/build/skyframe/SkyFunctionEnvironment.java
index cff9f46f15..6546cc8bb8 100644
--- a/src/main/java/com/google/devtools/build/skyframe/SkyFunctionEnvironment.java
+++ b/src/main/java/com/google/devtools/build/skyframe/SkyFunctionEnvironment.java
@@ -621,4 +621,15 @@ class SkyFunctionEnvironment extends AbstractSkyFunctionEnvironment {
public boolean inErrorBubblingForTesting() {
return bubbleErrorInfo != null;
}
+
+ @Override
+ public void registerDependencies(Iterable<SkyKey> keys) {
+ newlyRequestedDeps.startGroup();
+ for (SkyKey key : keys) {
+ if (!directDeps.containsKey(key)) {
+ addDep(key);
+ }
+ }
+ newlyRequestedDeps.endGroup();
+ }
}