diff options
author | 2018-02-08 13:29:30 -0800 | |
---|---|---|
committer | 2018-02-08 13:31:21 -0800 | |
commit | 0ab46f0dd95f735056add4dd8a90a76944b81d00 (patch) | |
tree | 3597993d68d65ce10c68b5acbfc772599587704a /src/main/java/com/google/devtools/build/lib/skyframe | |
parent | c7f613b0ede0efd977065d1fc190d2a67eb3148e (diff) |
Remove references to getTarget(). Requires threading through an
ExtendedEventHandler so we can get the target via the package manager during
rule dumps.
PiperOrigin-RevId: 185042522
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java | 16 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java | 2 |
2 files changed, 15 insertions, 3 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java index d32e94602f..20b05f0d46 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java @@ -41,8 +41,11 @@ import com.google.devtools.build.lib.events.EventHandler; import com.google.devtools.build.lib.events.ExtendedEventHandler; import com.google.devtools.build.lib.packages.AspectClass; import com.google.devtools.build.lib.packages.BuildFileName; +import com.google.devtools.build.lib.packages.NoSuchPackageException; +import com.google.devtools.build.lib.packages.NoSuchTargetException; import com.google.devtools.build.lib.packages.Package; import com.google.devtools.build.lib.packages.PackageFactory; +import com.google.devtools.build.lib.packages.Rule; import com.google.devtools.build.lib.packages.RuleClass; import com.google.devtools.build.lib.packages.SkylarkSemanticsOptions; import com.google.devtools.build.lib.pkgcache.PackageCacheOptions; @@ -692,7 +695,7 @@ public final class SequencedSkyframeExecutor extends SkyframeExecutor { } @Override - public List<RuleStat> getRuleStats() { + public List<RuleStat> getRuleStats(ExtendedEventHandler eventHandler) { Map<String, RuleStat> ruleStats = new HashMap<>(); for (Map.Entry<SkyKey, ? extends NodeEntry> skyKeyAndNodeEntry : memoizingEvaluator.getGraphMap().entrySet()) { @@ -707,8 +710,17 @@ public final class SequencedSkyframeExecutor extends SkyframeExecutor { ConfiguredTargetValue ctValue = (ConfiguredTargetValue) entry.getValue(); ConfiguredTarget configuredTarget = ctValue.getConfiguredTarget(); if (configuredTarget instanceof RuleConfiguredTarget) { + + Rule rule; + try { + rule = + (Rule) getPackageManager().getTarget(eventHandler, configuredTarget.getLabel()); + } catch (NoSuchPackageException | NoSuchTargetException | InterruptedException e) { + throw new IllegalStateException( + "Failed to get Rule target from package when calculating stats.", e); + } RuleConfiguredTarget ruleConfiguredTarget = (RuleConfiguredTarget) configuredTarget; - RuleClass ruleClass = ruleConfiguredTarget.getTarget().getRuleClassObject(); + RuleClass ruleClass = rule.getRuleClassObject(); RuleStat ruleStat = ruleStats.computeIfAbsent( ruleClass.getKey(), k -> new RuleStat(k, ruleClass.getName(), true)); diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java index 4cc660209a..5677caad8d 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java @@ -686,7 +686,7 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory { } /** Computes statistics on heap-resident rules and aspects. */ - public abstract List<RuleStat> getRuleStats(); + public abstract List<RuleStat> getRuleStats(ExtendedEventHandler eventHandler); /** * Removes ConfigurationFragmentValues from the cache. |