aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsValue.java
diff options
context:
space:
mode:
authorGravatar janakr <janakr@google.com>2018-02-14 14:08:45 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-02-14 14:10:01 -0800
commit40d0077016dee31865af5246cbd6b2953d6386b3 (patch)
treebc61c4057476ecfa5b25b6f37d2aa88bca05b7dd /src/main/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsValue.java
parentae52720bd38f1e1a29dc6d6910e6a0da95eb9236 (diff)
Start slimming down ToolchainResolutionKey: get rid of BuildConfiguration. The real blocker is PlatformInfo, which is coming.
PiperOrigin-RevId: 185742130
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsValue.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsValue.java50
1 files changed, 46 insertions, 4 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsValue.java
index 23d30a07a8..1fb6d11c5f 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsValue.java
@@ -16,11 +16,14 @@ package com.google.devtools.build.lib.skyframe;
import com.google.auto.value.AutoValue;
import com.google.common.collect.ImmutableList;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.common.collect.Interner;
import com.google.devtools.build.lib.analysis.platform.DeclaredToolchainInfo;
-import com.google.devtools.build.skyframe.LegacySkyKey;
+import com.google.devtools.build.lib.concurrent.BlazeInterners;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
+import com.google.devtools.build.skyframe.SkyFunctionName;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
+import java.util.Objects;
/**
* A value which represents every toolchain known to Bazel and available for toolchain resolution.
@@ -29,8 +32,47 @@ import com.google.devtools.build.skyframe.SkyValue;
public abstract class RegisteredToolchainsValue implements SkyValue {
/** Returns the {@link SkyKey} for {@link RegisteredToolchainsValue}s. */
- public static SkyKey key(BuildConfiguration configuration) {
- return LegacySkyKey.create(SkyFunctions.REGISTERED_TOOLCHAINS, configuration);
+ public static Key key(BuildConfigurationValue.Key configurationKey) {
+ return Key.of(configurationKey);
+ }
+
+ @AutoCodec
+ static class Key implements SkyKey {
+ private static final Interner<Key> interners = BlazeInterners.newWeakInterner();
+ private final BuildConfigurationValue.Key configurationKey;
+
+ private Key(BuildConfigurationValue.Key configurationKey) {
+ this.configurationKey = configurationKey;
+ }
+
+ @AutoCodec.Instantiator
+ @AutoCodec.VisibleForSerialization
+ static Key of(BuildConfigurationValue.Key configurationKey) {
+ return interners.intern(new Key(configurationKey));
+ }
+
+ @Override
+ public SkyFunctionName functionName() {
+ return SkyFunctions.REGISTERED_TOOLCHAINS;
+ }
+
+ BuildConfigurationValue.Key getConfigurationKey() {
+ return configurationKey;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (!(obj instanceof Key)) {
+ return false;
+ }
+ Key that = (Key) obj;
+ return Objects.equals(this.configurationKey, that.configurationKey);
+ }
+
+ @Override
+ public int hashCode() {
+ return configurationKey.hashCode();
+ }
}
public static RegisteredToolchainsValue create(