diff options
author | 2018-04-06 18:00:50 -0700 | |
---|---|---|
committer | 2018-04-06 18:02:48 -0700 | |
commit | 71ee3b23e3a3a7ef11ba400eaface395881d57c8 (patch) | |
tree | 12abb2260e9fa385f54e3c5c7b528ea8791c21a8 /src/main/java/com/google/devtools/build/skyframe | |
parent | 4a1e76bef02460826772b02fe2d50992810efc2d (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.java | 7 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/skyframe/SkyFunctionEnvironment.java | 11 |
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(); + } } |