aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java
diff options
context:
space:
mode:
authorGravatar janakr <janakr@google.com>2018-03-28 15:26:04 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-03-28 15:27:41 -0700
commit500e17be9da4c334c02b8e08f2d5c62254432178 (patch)
tree18baa9eff523797d6b949477da99a95ceff137ba /src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java
parent6d4f4f9e9278dd10f722adf7a5c02cfd5efee288 (diff)
Allow ConfiguredTargetFunction to release its CPU-bound semaphore during dep requests if SkyframeExecutor has reason to believe that those requests may not be CPU-bound.
PiperOrigin-RevId: 190844728
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.java11
1 files changed, 11 insertions, 0 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 61377b4e90..17ffe47c77 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
@@ -126,12 +126,15 @@ public final class ConfiguredTargetFunction implements SkyFunction {
*/
private final boolean storeTransitivePackagesForPackageRootResolution;
+ private final boolean shouldUnblockCpuWorkWhenFetchingDeps;
+
ConfiguredTargetFunction(
BuildViewProvider buildViewProvider,
RuleClassProvider ruleClassProvider,
Semaphore cpuBoundSemaphore,
Supplier<Boolean> removeActionsAfterEvaluation,
boolean storeTransitivePackagesForPackageRootResolution,
+ boolean shouldUnblockCpuWorkWhenFetchingDeps,
BuildOptions defaultBuildOptions) {
this.buildViewProvider = buildViewProvider;
this.ruleClassProvider = ruleClassProvider;
@@ -139,12 +142,20 @@ public final class ConfiguredTargetFunction implements SkyFunction {
this.removeActionsAfterEvaluation = Preconditions.checkNotNull(removeActionsAfterEvaluation);
this.storeTransitivePackagesForPackageRootResolution =
storeTransitivePackagesForPackageRootResolution;
+ this.shouldUnblockCpuWorkWhenFetchingDeps = shouldUnblockCpuWorkWhenFetchingDeps;
this.defaultBuildOptions = defaultBuildOptions;
}
@Override
public SkyValue compute(SkyKey key, Environment env) throws ConfiguredTargetFunctionException,
InterruptedException {
+ if (shouldUnblockCpuWorkWhenFetchingDeps) {
+ env =
+ new StateInformingSkyFunctionEnvironment(
+ env,
+ /*preFetch=*/ cpuBoundSemaphore::release,
+ /*postFetch=*/ cpuBoundSemaphore::acquire);
+ }
SkyframeBuildView view = buildViewProvider.getSkyframeBuildView();
NestedSetBuilder<Package> transitivePackagesForPackageRootResolution =
storeTransitivePackagesForPackageRootResolution ? NestedSetBuilder.stableOrder() : null;