aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveBaseTraversalFunction.java
diff options
context:
space:
mode:
authorGravatar shreyax <shreyax@google.com>2018-02-20 15:35:48 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-02-20 15:37:56 -0800
commit7b1b4a41dbfbf34a8e077590612cf5fe3aaaa987 (patch)
treeda93790018a83fc80a6f96eec8c8046a3f1ef568 /src/main/java/com/google/devtools/build/lib/skyframe/TransitiveBaseTraversalFunction.java
parentc1042f2adc55d040495a1159100146fad607d32a (diff)
In TransitiveBaseTraversalFunction, only process the deps once we have all the information we need. It is a waste of CPU time otherwise as we will just lose the state. Note that we don't pass the env directly into the processDeps function so this wasn't a skyframe restart optimization. Also, none of the state recorded in the processDeps for the direct label deps is used in computing the aspect deps, as we immediately call targetAndErrorIfAny#getTarget.
PiperOrigin-RevId: 186373573
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/TransitiveBaseTraversalFunction.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/TransitiveBaseTraversalFunction.java8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveBaseTraversalFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveBaseTraversalFunction.java
index 5b6e9ed59b..b51bab41d5 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveBaseTraversalFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveBaseTraversalFunction.java
@@ -125,7 +125,6 @@ abstract class TransitiveBaseTraversalFunction<TProcessedTargets> implements Sky
loadTargetResultsType.equals(LoadTargetResultsType.TARGET_AND_ERROR_IF_ANY),
loadTargetResultsType);
TargetAndErrorIfAny targetAndErrorIfAny = (TargetAndErrorIfAny) loadTargetResults;
- TProcessedTargets processedTargets = processTarget(label, targetAndErrorIfAny);
// Process deps from attributes.
Collection<SkyKey> labelDepKeys =
@@ -134,22 +133,23 @@ abstract class TransitiveBaseTraversalFunction<TProcessedTargets> implements Sky
Map<SkyKey, ValueOrException2<NoSuchPackageException, NoSuchTargetException>> depMap =
env.getValuesOrThrow(labelDepKeys, NoSuchPackageException.class,
NoSuchTargetException.class);
- processDeps(processedTargets, env.getListener(), targetAndErrorIfAny, depMap.entrySet());
if (env.valuesMissing()) {
return null;
}
-
// Process deps from aspects.
Iterable<SkyKey> labelAspectKeys =
getStrictLabelAspectKeys(targetAndErrorIfAny.getTarget(), depMap, env);
Set<Entry<SkyKey, ValueOrException2<NoSuchPackageException, NoSuchTargetException>>>
labelAspectEntries = env.getValuesOrThrow(labelAspectKeys, NoSuchPackageException.class,
NoSuchTargetException.class).entrySet();
- processDeps(processedTargets, env.getListener(), targetAndErrorIfAny, labelAspectEntries);
if (env.valuesMissing()) {
return null;
}
+ TProcessedTargets processedTargets = processTarget(label, targetAndErrorIfAny);
+ processDeps(processedTargets, env.getListener(), targetAndErrorIfAny, depMap.entrySet());
+ processDeps(processedTargets, env.getListener(), targetAndErrorIfAny, labelAspectEntries);
+
return computeSkyValue(targetAndErrorIfAny, processedTargets);
}