diff options
author | shreyax <shreyax@google.com> | 2018-02-20 15:35:48 -0800 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-02-20 15:37:56 -0800 |
commit | 7b1b4a41dbfbf34a8e077590612cf5fe3aaaa987 (patch) | |
tree | da93790018a83fc80a6f96eec8c8046a3f1ef568 /src/main/java/com/google/devtools/build/lib/skyframe/TransitiveBaseTraversalFunction.java | |
parent | c1042f2adc55d040495a1159100146fad607d32a (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.java | 8 |
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); } |