aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
diff options
context:
space:
mode:
authorGravatar Ulf Adams <ulfjack@google.com>2015-09-28 13:21:45 +0000
committerGravatar Kristina Chodorow <kchodorow@google.com>2015-09-28 14:35:36 +0000
commita385d3eb7b78d4d155b7218019a08e7457f2514c (patch)
treeac817b31a3c15d8bf2f62d8130aa721eb0e36555 /src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
parent4e7ed50345f3a3037549f7c41f852b5d9db4a08d (diff)
Refactor BuildView; clearly identify the ide_build_info and the testing API.
Also inject the EventHandler all the way through to the SkyframeExecutor. -- MOS_MIGRATED_REVID=104094731
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java36
1 files changed, 22 insertions, 14 deletions
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 cbf864d840..d21c14ff08 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
@@ -1091,14 +1091,17 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory {
* returned list.
*/
@ThreadSafety.ThreadSafe
- public ImmutableList<ConfiguredTarget> getConfiguredTargets(BuildConfiguration originalConfig,
- Iterable<Dependency> keys, boolean useOriginalConfig) {
- return getConfiguredTargetMap(originalConfig, keys, useOriginalConfig).values().asList();
+ public ImmutableList<ConfiguredTarget> getConfiguredTargets(
+ EventHandler eventHandler, BuildConfiguration originalConfig, Iterable<Dependency> keys,
+ boolean useOriginalConfig) {
+ return getConfiguredTargetMap(
+ eventHandler, originalConfig, keys, useOriginalConfig).values().asList();
}
@ThreadSafety.ThreadSafe
public ImmutableMap<Dependency, ConfiguredTarget> getConfiguredTargetMap(
- BuildConfiguration originalConfig, Iterable<Dependency> keys, boolean useOriginalConfig) {
+ EventHandler eventHandler, BuildConfiguration originalConfig, Iterable<Dependency> keys,
+ boolean useOriginalConfig) {
checkActive();
Map<Dependency, BuildConfiguration> configs;
@@ -1116,7 +1119,7 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory {
configs = new HashMap<>();
configs.put(Iterables.getOnlyElement(keys), originalConfig);
} else {
- configs = getConfigurations(originalConfig.getOptions(), keys);
+ configs = getConfigurations(eventHandler, originalConfig.getOptions(), keys);
}
} else {
configs = new HashMap<>();
@@ -1134,7 +1137,7 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory {
}
}
- EvaluationResult<SkyValue> result = evaluateSkyKeys(skyKeys);
+ EvaluationResult<SkyValue> result = evaluateSkyKeys(eventHandler, skyKeys);
ImmutableMap.Builder<Dependency, ConfiguredTarget> cts = ImmutableMap.builder();
DependentNodeLoop:
@@ -1169,8 +1172,8 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory {
* Retrieves the configurations needed for the given deps, trimming down their fragments
* to those only needed by their transitive closures.
*/
- private Map<Dependency, BuildConfiguration> getConfigurations(BuildOptions fromOptions,
- Iterable<Dependency> keys) {
+ private Map<Dependency, BuildConfiguration> getConfigurations(EventHandler eventHandler,
+ BuildOptions fromOptions, Iterable<Dependency> keys) {
Map<Dependency, BuildConfiguration> builder = new HashMap<>();
Set<Dependency> depsToEvaluate = new HashSet<>();
@@ -1190,7 +1193,8 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory {
transitiveFragmentSkyKeys.add(TransitiveTargetValue.key(key.getLabel()));
}
}
- EvaluationResult<SkyValue> fragmentsResult = evaluateSkyKeys(transitiveFragmentSkyKeys);
+ EvaluationResult<SkyValue> fragmentsResult = evaluateSkyKeys(
+ eventHandler, transitiveFragmentSkyKeys);
for (Dependency key : keys) {
if (!depsToEvaluate.contains(key)) {
// No fragments to compute here.
@@ -1212,7 +1216,7 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory {
configSkyKeys.add(BuildConfigurationValue.key(fragmentsMap.get(key.getLabel()),
getDynamicConfigOptions(key, fromOptions)));
}
- EvaluationResult<SkyValue> configsResult = evaluateSkyKeys(configSkyKeys);
+ EvaluationResult<SkyValue> configsResult = evaluateSkyKeys(eventHandler, configSkyKeys);
for (Dependency key : keys) {
if (!depsToEvaluate.contains(key) || labelsWithErrors.contains(key.getLabel())) {
continue;
@@ -1242,7 +1246,8 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory {
/**
* Evaluates the given sky keys, blocks, and returns their evaluation results.
*/
- private EvaluationResult<SkyValue> evaluateSkyKeys(final Iterable<SkyKey> skyKeys) {
+ private EvaluationResult<SkyValue> evaluateSkyKeys(
+ final EventHandler eventHandler, final Iterable<SkyKey> skyKeys) {
EvaluationResult<SkyValue> result;
try {
result = callUninterruptibly(new Callable<EvaluationResult<SkyValue>>() {
@@ -1251,7 +1256,7 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory {
synchronized (valueLookupLock) {
try {
skyframeBuildView.enableAnalysis(true);
- return buildDriver.evaluate(skyKeys, false, DEFAULT_THREAD_COUNT, errorEventListener);
+ return buildDriver.evaluate(skyKeys, false, DEFAULT_THREAD_COUNT, eventHandler);
} finally {
skyframeBuildView.enableAnalysis(false);
}
@@ -1287,13 +1292,16 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory {
@VisibleForTesting
@Nullable
public ConfiguredTarget getConfiguredTargetForTesting(
- Label label, BuildConfiguration configuration) {
+ EventHandler eventHandler, Label label, BuildConfiguration configuration) {
if (memoizingEvaluator.getExistingValueForTesting(
PrecomputedValue.WORKSPACE_STATUS_KEY.getKeyForTesting()) == null) {
injectWorkspaceStatusData();
}
return Iterables.getFirst(
- getConfiguredTargets(configuration, ImmutableList.of(new Dependency(label, configuration)),
+ getConfiguredTargets(
+ eventHandler,
+ configuration,
+ ImmutableList.of(new Dependency(label, configuration)),
true),
null);
}