Add codec for ConfiguredTargetKey and remove stray LegacySkyKey constructors that took ConfiguredTargetKey.

PiperOrigin-RevId: 183519981
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 c2353b8..166119f 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.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 @@
  * action of an artifact.
  */
 public class ConfiguredTargetKey extends ActionLookupKey {
+  public static final ObjectCodec<ConfiguredTargetKey> CODEC = Codec.INSTANCE;
+
   private final Label label;
   @Nullable private final BuildConfigurationValue.Key configurationKey;
 
@@ -192,4 +199,37 @@
       this.isHost = isHost;
     }
   }
+
+  private static final class Codec implements ObjectCodec<ConfiguredTargetKey> {
+    private static final Codec INSTANCE = new Codec();
+
+    private Codec() {}
+
+    @Override
+    public Class<ConfiguredTargetKey> 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 1f34c53..b587ab9 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.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 @@
     ImmutableList<SkyKey> keys =
         labels
             .stream()
-            .map(
-                label ->
-                    LegacySkyKey.create(
-                        SkyFunctions.CONFIGURED_TARGET,
-                        ConfiguredTargetKey.of(label, configuration)))
+            .map(label -> ConfiguredTargetKey.of(label, configuration))
             .collect(ImmutableList.toImmutableList());
 
     Map<SkyKey, ValueOrException<ConfiguredValueCreationException>> 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 ad531b3..7a2c948 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.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 @@
     ImmutableList<SkyKey> keys =
         labels
             .stream()
-            .map(
-                label ->
-                    LegacySkyKey.create(
-                        SkyFunctions.CONFIGURED_TARGET,
-                        ConfiguredTargetKey.of(label, configuration)))
+            .map(label -> ConfiguredTargetKey.of(label, configuration))
             .collect(ImmutableList.toImmutableList());
 
     Map<SkyKey, ValueOrException<ConfiguredValueCreationException>> 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 11e44fc..d687136 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.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 @@
     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<SkyKey, ValueOrException<ConfiguredValueCreationException>> values =
         env.getValuesOrThrow(