diff options
author | janakr <janakr@google.com> | 2018-02-14 14:08:45 -0800 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-02-14 14:10:01 -0800 |
commit | 40d0077016dee31865af5246cbd6b2953d6386b3 (patch) | |
tree | bc61c4057476ecfa5b25b6f37d2aa88bca05b7dd /src/main/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsValue.java | |
parent | ae52720bd38f1e1a29dc6d6910e6a0da95eb9236 (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.java | 50 |
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( |