From 4da310b882b354bb542fb79c8791981eeb2e964b Mon Sep 17 00:00:00 2001 From: janakr Date: Sat, 27 Jan 2018 06:59:08 -0800 Subject: Add codec for ConfiguredTargetKey and remove stray LegacySkyKey constructors that took ConfiguredTargetKey. PiperOrigin-RevId: 183519981 --- .../build/lib/skyframe/ConfiguredTargetKey.java | 40 ++++++++++++++++++++++ .../RegisteredExecutionPlatformsFunction.java | 7 +--- .../lib/skyframe/RegisteredToolchainsFunction.java | 7 +--- .../devtools/build/lib/skyframe/ToolchainUtil.java | 11 ++---- 4 files changed, 44 insertions(+), 21 deletions(-) (limited to 'src/main/java/com/google/devtools') diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetKey.java b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetKey.java index c2353b8dda..166119f6a4 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetKey.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetKey.java @@ -22,7 +22,12 @@ import com.google.devtools.build.lib.analysis.ConfiguredTarget; import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.concurrent.BlazeInterners; +import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec; +import com.google.devtools.build.lib.skyframe.serialization.SerializationException; import com.google.devtools.build.skyframe.SkyFunctionName; +import com.google.protobuf.CodedInputStream; +import com.google.protobuf.CodedOutputStream; +import java.io.IOException; import java.util.Objects; import javax.annotation.Nullable; @@ -31,6 +36,8 @@ import javax.annotation.Nullable; * action of an artifact. */ public class ConfiguredTargetKey extends ActionLookupKey { + public static final ObjectCodec CODEC = Codec.INSTANCE; + private final Label label; @Nullable private final BuildConfigurationValue.Key configurationKey; @@ -192,4 +199,37 @@ public class ConfiguredTargetKey extends ActionLookupKey { this.isHost = isHost; } } + + private static final class Codec implements ObjectCodec { + private static final Codec INSTANCE = new Codec(); + + private Codec() {} + + @Override + public Class getEncodedClass() { + return ConfiguredTargetKey.class; + } + + @Override + public void serialize(ConfiguredTargetKey obj, CodedOutputStream codedOut) + throws SerializationException, IOException { + Label.CODEC.serialize(obj.label, codedOut); + if (obj.configurationKey == null) { + codedOut.writeBoolNoTag(false); + } else { + codedOut.writeBoolNoTag(true); + BuildConfigurationValue.Key.CODEC.serialize(obj.configurationKey, codedOut); + } + codedOut.writeBoolNoTag(obj.isHostConfiguration()); + } + + @Override + public ConfiguredTargetKey deserialize(CodedInputStream codedIn) + throws SerializationException, IOException { + return of( + Label.CODEC.deserialize(codedIn), + codedIn.readBool() ? BuildConfigurationValue.Key.CODEC.deserialize(codedIn) : null, + codedIn.readBool()); + } + } } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredExecutionPlatformsFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredExecutionPlatformsFunction.java index 1f34c530a8..b587ab9d4b 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredExecutionPlatformsFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredExecutionPlatformsFunction.java @@ -23,7 +23,6 @@ import com.google.devtools.build.lib.analysis.platform.PlatformProviderUtils; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.packages.Package; import com.google.devtools.build.lib.skyframe.ConfiguredTargetFunction.ConfiguredValueCreationException; -import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyFunction; import com.google.devtools.build.skyframe.SkyFunctionException; import com.google.devtools.build.skyframe.SkyFunctionException.Transience; @@ -92,11 +91,7 @@ public class RegisteredExecutionPlatformsFunction implements SkyFunction { ImmutableList keys = labels .stream() - .map( - label -> - LegacySkyKey.create( - SkyFunctions.CONFIGURED_TARGET, - ConfiguredTargetKey.of(label, configuration))) + .map(label -> ConfiguredTargetKey.of(label, configuration)) .collect(ImmutableList.toImmutableList()); Map> values = diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsFunction.java index ad531b30f5..7a2c948efe 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsFunction.java @@ -23,7 +23,6 @@ import com.google.devtools.build.lib.analysis.platform.DeclaredToolchainInfo; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.packages.Package; import com.google.devtools.build.lib.skyframe.ConfiguredTargetFunction.ConfiguredValueCreationException; -import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyFunction; import com.google.devtools.build.skyframe.SkyFunctionException; import com.google.devtools.build.skyframe.SkyFunctionException.Transience; @@ -102,11 +101,7 @@ public class RegisteredToolchainsFunction implements SkyFunction { ImmutableList keys = labels .stream() - .map( - label -> - LegacySkyKey.create( - SkyFunctions.CONFIGURED_TARGET, - ConfiguredTargetKey.of(label, configuration))) + .map(label -> ConfiguredTargetKey.of(label, configuration)) .collect(ImmutableList.toImmutableList()); Map> values = diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ToolchainUtil.java b/src/main/java/com/google/devtools/build/lib/skyframe/ToolchainUtil.java index 11e44fca77..d6871364d6 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/ToolchainUtil.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/ToolchainUtil.java @@ -30,7 +30,6 @@ import com.google.devtools.build.lib.skyframe.RegisteredToolchainsFunction.Inval import com.google.devtools.build.lib.skyframe.ToolchainResolutionFunction.NoToolchainFoundException; import com.google.devtools.build.lib.skyframe.ToolchainResolutionValue.ToolchainResolutionKey; import com.google.devtools.build.lib.syntax.EvalException; -import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyFunction.Environment; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.ValueOrException; @@ -141,14 +140,8 @@ public class ToolchainUtil { Label executionPlatformLabel = platformConfiguration.getExecutionPlatform(); Label targetPlatformLabel = platformConfiguration.getTargetPlatforms().get(0); - SkyKey executionPlatformKey = - LegacySkyKey.create( - SkyFunctions.CONFIGURED_TARGET, - ConfiguredTargetKey.of(executionPlatformLabel, configuration)); - SkyKey targetPlatformKey = - LegacySkyKey.create( - SkyFunctions.CONFIGURED_TARGET, - ConfiguredTargetKey.of(targetPlatformLabel, configuration)); + SkyKey executionPlatformKey = ConfiguredTargetKey.of(executionPlatformLabel, configuration); + SkyKey targetPlatformKey = ConfiguredTargetKey.of(targetPlatformLabel, configuration); Map> values = env.getValuesOrThrow( -- cgit v1.2.3