diff options
author | janakr <janakr@google.com> | 2018-08-09 15:59:24 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-08-09 16:01:37 -0700 |
commit | d0a3c5eb67320906e4b937df5434f0e673cb6dce (patch) | |
tree | bd53ecfb3e65235f83e18d2d56382fb1468d1e2c /src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java | |
parent | 39974a43abdd32e3a1acbc7da945b08da9983e4e (diff) |
Batch all DependencyResolver#getTarget calls. This leads to some duplicate iteration, but that should be cheap, while requesting packages sequentially can hurt...
PiperOrigin-RevId: 208126130
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java index d50c6c80f3..bad9ec038b 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java @@ -568,8 +568,13 @@ public final class ConfiguredTargetFunction implements SkyFunction { // conditions evaluate over the current target's configuration). ImmutableList.Builder<Dependency> depsBuilder = ImmutableList.builder(); try { - for (Dependency dep : resolver.resolveRuleLabels( - ctgValue, configLabelMap, transitiveRootCauses, trimmingTransitionFactory)) { + Iterable<Dependency> dependencies = + resolver.resolveRuleLabels( + ctgValue, configLabelMap, transitiveRootCauses, trimmingTransitionFactory); + if (env.valuesMissing()) { + return null; + } + for (Dependency dep : dependencies) { if (dep.hasExplicitConfiguration() && dep.getConfiguration() == null) { // Bazel assumes non-existent labels are source files, which have a null configuration. // Keep those as is. Otherwise ConfiguredTargetAndData throws an exception about a @@ -584,9 +589,6 @@ public final class ConfiguredTargetFunction implements SkyFunction { } catch (InconsistentAspectOrderException e) { throw new DependencyEvaluationException(e); } - if (env.valuesMissing()) { - return null; - } ImmutableList<Dependency> configConditionDeps = depsBuilder.build(); Map<SkyKey, ConfiguredTargetAndData> configValues = |