diff options
author | 2018-02-22 16:16:52 -0800 | |
---|---|---|
committer | 2018-02-22 16:18:33 -0800 | |
commit | 93beba12298937b4b5d4d2273f7489d0ead7a68f (patch) | |
tree | 8a6055faa4be90783d214d025c64a86fec01b7e0 /src/main/java | |
parent | c4f1df5b05e6b39c7c3d6538e702e4d7ff041cfb (diff) |
Add more codecs to execution phase.
PiperOrigin-RevId: 186691973
Diffstat (limited to 'src/main/java')
4 files changed, 41 insertions, 9 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoSupportValue.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoSupportValue.java index 6cd722f8e4..da8c79d761 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoSupportValue.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoSupportValue.java @@ -13,12 +13,15 @@ // limitations under the License. package com.google.devtools.build.lib.rules.cpp; +import com.google.common.collect.Interner; +import com.google.devtools.build.lib.concurrent.BlazeInterners; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.rules.cpp.FdoSupport.FdoMode; +import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; import com.google.devtools.build.lib.vfs.Path; import com.google.devtools.build.lib.vfs.PathFragment; import com.google.devtools.build.lib.view.config.crosstool.CrosstoolConfig.LipoMode; -import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyFunctionName; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; @@ -37,11 +40,13 @@ import java.util.Objects; public class FdoSupportValue implements SkyValue { public static final SkyFunctionName SKYFUNCTION = SkyFunctionName.create("FDO_SUPPORT"); - /** - * {@link SkyKey} for {@link FdoSupportValue}. - */ + /** {@link SkyKey} for {@link FdoSupportValue}. */ @Immutable - public static class Key { + @AutoCodec + public static class Key implements SkyKey { + private static final Interner<Key> interner = BlazeInterners.newWeakInterner(); + public static final ObjectCodec<Key> CODEC = new FdoSupportValue_Key_AutoCodec(); + private final LipoMode lipoMode; private final Path fdoZip; private final PathFragment fdoInstrument; @@ -54,6 +59,12 @@ public class FdoSupportValue implements SkyValue { this.fdoMode = fdoMode; } + @AutoCodec.Instantiator + @AutoCodec.VisibleForSerialization + static Key of(LipoMode lipoMode, Path fdoZip, PathFragment fdoInstrument, FdoMode fdoMode) { + return interner.intern(new Key(lipoMode, fdoZip, fdoInstrument, fdoMode)); + } + public LipoMode getLipoMode() { return lipoMode; } @@ -91,6 +102,11 @@ public class FdoSupportValue implements SkyValue { public int hashCode() { return Objects.hash(lipoMode, fdoZip, fdoInstrument); } + + @Override + public SkyFunctionName functionName() { + return SKYFUNCTION; + } } private final FdoSupport fdoSupport; @@ -105,6 +121,6 @@ public class FdoSupportValue implements SkyValue { public static SkyKey key( LipoMode lipoMode, Path fdoZip, PathFragment fdoInstrument, FdoMode fdoMode) { - return LegacySkyKey.create(SKYFUNCTION, new Key(lipoMode, fdoZip, fdoInstrument, fdoMode)); + return Key.of(lipoMode, fdoZip, fdoInstrument, fdoMode); } } 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 1fb6d11c5f..538a99059a 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 @@ -19,6 +19,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.Interner; import com.google.devtools.build.lib.analysis.platform.DeclaredToolchainInfo; 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.autocodec.AutoCodec; import com.google.devtools.build.skyframe.SkyFunctionName; import com.google.devtools.build.skyframe.SkyKey; @@ -36,9 +37,14 @@ public abstract class RegisteredToolchainsValue implements SkyValue { return Key.of(configurationKey); } + /** A {@link SkyKey} for {@code RegisteredToolchainsValue}. */ @AutoCodec - static class Key implements SkyKey { + @AutoCodec.VisibleForSerialization + // TODO(shahan): Reduce visibility and remove CODEC field once unneeded. + public static class Key implements SkyKey { private static final Interner<Key> interners = BlazeInterners.newWeakInterner(); + public static final ObjectCodec<Key> CODEC = new RegisteredToolchainsValue_Key_AutoCodec(); + private final BuildConfigurationValue.Key configurationKey; private Key(BuildConfigurationValue.Key configurationKey) { diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ToolchainResolutionValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/ToolchainResolutionValue.java index 69ab59926c..2ee27e9de8 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/ToolchainResolutionValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/ToolchainResolutionValue.java @@ -19,6 +19,8 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.analysis.platform.PlatformInfo; import com.google.devtools.build.lib.cmdline.Label; +import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec; +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; @@ -44,8 +46,12 @@ public abstract class ToolchainResolutionValue implements SkyValue { } /** {@link SkyKey} implementation used for {@link ToolchainResolutionFunction}. */ + @AutoCodec @AutoValue public abstract static class ToolchainResolutionKey implements SkyKey { + public static final ObjectCodec<ToolchainResolutionKey> CODEC = + new ToolchainResolutionValue_ToolchainResolutionKey_AutoCodec(); + @Override public SkyFunctionName functionName() { return SkyFunctions.TOOLCHAIN_RESOLUTION; @@ -59,13 +65,14 @@ public abstract class ToolchainResolutionValue implements SkyValue { abstract ImmutableList<ConfiguredTargetKey> availableExecutionPlatformKeys(); + @AutoCodec.Instantiator static ToolchainResolutionKey create( - BuildConfigurationValue.Key configuration, + BuildConfigurationValue.Key configurationKey, Label toolchainType, ConfiguredTargetKey targetPlatformKey, List<ConfiguredTargetKey> availableExecutionPlatformKeys) { return new AutoValue_ToolchainResolutionValue_ToolchainResolutionKey( - configuration, + configurationKey, toolchainType, targetPlatformKey, ImmutableList.copyOf(availableExecutionPlatformKeys)); diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceStatusValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceStatusValue.java index 777dcbab4a..a628fb653b 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceStatusValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceStatusValue.java @@ -17,6 +17,7 @@ import com.google.devtools.build.lib.actions.ActionKeyContext; import com.google.devtools.build.lib.actions.ActionLookupValue; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.analysis.WorkspaceStatusAction; +import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec; import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; import com.google.devtools.build.skyframe.SkyFunctionName; import com.google.devtools.build.skyframe.SkyKey; @@ -57,6 +58,8 @@ public class WorkspaceStatusValue extends ActionLookupValue { @AutoCodec(strategy = AutoCodec.Strategy.SINGLETON) public static class BuildInfoKey extends ActionLookupKey { @AutoCodec.VisibleForSerialization static final BuildInfoKey INSTANCE = new BuildInfoKey(); + public static final ObjectCodec<BuildInfoKey> CODEC = + new WorkspaceStatusValue_BuildInfoKey_AutoCodec(); private BuildInfoKey() {} |