diff options
author | 2018-02-27 14:15:45 -0800 | |
---|---|---|
committer | 2018-02-27 14:17:21 -0800 | |
commit | 860e103e37ec2765a2dce04bf05c14ba0828066c (patch) | |
tree | 08083005666b37c77f363cea078dcc35112d979a /src/main/java/com | |
parent | c5e36f668ae953dfec24850522b10f79bc686945 (diff) |
Add @AutoCodec to some PatchTransitions.
PiperOrigin-RevId: 187230702
Diffstat (limited to 'src/main/java/com')
9 files changed, 52 insertions, 27 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java b/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java index 4b44be7b6d..14b7dcce69 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java @@ -49,6 +49,8 @@ import com.google.devtools.build.lib.packages.PackageGroup; import com.google.devtools.build.lib.packages.Rule; import com.google.devtools.build.lib.packages.RuleClass; import com.google.devtools.build.lib.packages.Target; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization; import com.google.devtools.build.lib.syntax.EvalException; import com.google.devtools.build.lib.syntax.EvalUtils; import com.google.devtools.build.lib.util.OrderedSetMultimap; @@ -776,10 +778,10 @@ public abstract class DependencyResolver { } } - /** - * A patch transition that returns a fixed set of options regardless of the input. - */ - private static class FixedTransition implements PatchTransition { + /** A patch transition that returns a fixed set of options regardless of the input. */ + @AutoCodec + @VisibleForSerialization + static class FixedTransition implements PatchTransition { private final BuildOptions toOptions; FixedTransition(BuildOptions toOptions) { diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/HostTransition.java b/src/main/java/com/google/devtools/build/lib/analysis/config/HostTransition.java index 08fd6095d0..b62ce78bc4 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/HostTransition.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/HostTransition.java @@ -14,12 +14,12 @@ package com.google.devtools.build.lib.analysis.config; import com.google.devtools.build.lib.analysis.config.transitions.PatchTransition; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; -/** - * Dynamic transition to the host configuration. - */ +/** Dynamic transition to the host configuration. */ public final class HostTransition implements PatchTransition { - public static final HostTransition INSTANCE = new HostTransition(); + + @AutoCodec public static final HostTransition INSTANCE = new HostTransition(); private HostTransition() {} diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/NoTransition.java b/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/NoTransition.java index d5581e5469..793edafd3e 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/NoTransition.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/NoTransition.java @@ -14,12 +14,12 @@ package com.google.devtools.build.lib.analysis.config.transitions; import com.google.devtools.build.lib.analysis.config.BuildOptions; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; -/** - * No-op configuration transition. - */ +/** No-op configuration transition. */ public final class NoTransition implements PatchTransition { - public static final NoTransition INSTANCE = new NoTransition(); + + @AutoCodec public static final NoTransition INSTANCE = new NoTransition(); private NoTransition() {} diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/NullTransition.java b/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/NullTransition.java index 2edbb9fb0f..0d7156b51e 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/NullTransition.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/NullTransition.java @@ -14,13 +14,12 @@ package com.google.devtools.build.lib.analysis.config.transitions; import com.google.devtools.build.lib.analysis.config.BuildOptions; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; -/** - * A {@link PatchTransition} to a null configuration. - */ +/** A {@link PatchTransition} to a null configuration. */ public class NullTransition implements PatchTransition { - public static final NullTransition INSTANCE = new NullTransition(); + @AutoCodec public static final NullTransition INSTANCE = new NullTransition(); private NullTransition() { } diff --git a/src/main/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagTransitionFactory.java b/src/main/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagTransitionFactory.java index 704ead9611..a5201d583e 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagTransitionFactory.java +++ b/src/main/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagTransitionFactory.java @@ -23,6 +23,8 @@ import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.packages.NonconfigurableAttributeMapper; import com.google.devtools.build.lib.packages.Rule; import com.google.devtools.build.lib.packages.RuleTransitionFactory; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization; import java.util.Map; /** @@ -34,13 +36,21 @@ import java.util.Map; public class ConfigFeatureFlagTransitionFactory implements RuleTransitionFactory { /** Transition which resets the set of flag-value pairs to the map it was constructed with. */ - private static final class ConfigFeatureFlagValuesTransition implements PatchTransition { + @AutoCodec + @VisibleForSerialization + static final class ConfigFeatureFlagValuesTransition implements PatchTransition { private final ImmutableSortedMap<Label, String> flagValues; private final int cachedHashCode; public ConfigFeatureFlagValuesTransition(Map<Label, String> flagValues) { + this(ImmutableSortedMap.copyOf(flagValues), flagValues.hashCode()); + } + + @AutoCodec.Instantiator + ConfigFeatureFlagValuesTransition( + ImmutableSortedMap<Label, String> flagValues, int cachedHashCode) { this.flagValues = ImmutableSortedMap.copyOf(flagValues); - this.cachedHashCode = this.flagValues.hashCode(); + this.cachedHashCode = cachedHashCode; } @Override diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/transitions/ContextCollectorOwnerTransition.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/transitions/ContextCollectorOwnerTransition.java index 3958974c55..a13f31991c 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/transitions/ContextCollectorOwnerTransition.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/transitions/ContextCollectorOwnerTransition.java @@ -19,10 +19,11 @@ import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.analysis.config.transitions.PatchTransition; import com.google.devtools.build.lib.rules.cpp.CppOptions; import com.google.devtools.build.lib.rules.cpp.CppOptions.LipoConfigurationState; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; /** - * Configuration transition that creates the "artifact owner" configuration from the LIPO - * context collector configuration. + * Configuration transition that creates the "artifact owner" configuration from the LIPO context + * collector configuration. * * <p>The context collector creates C++ output artifacts but doesn't create the actions that * generate those artifacts (this is what {@link BuildConfiguration#isActionsEnabled()} means). @@ -33,6 +34,8 @@ import com.google.devtools.build.lib.rules.cpp.CppOptions.LipoConfigurationState * <p>This is a no-op for all configurations but the context collector. */ public class ContextCollectorOwnerTransition implements PatchTransition { + + @AutoCodec public static final ContextCollectorOwnerTransition INSTANCE = new ContextCollectorOwnerTransition(); diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/transitions/DisableLipoTransition.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/transitions/DisableLipoTransition.java index 3284a1b1c2..111207eb42 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/transitions/DisableLipoTransition.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/transitions/DisableLipoTransition.java @@ -17,17 +17,17 @@ package com.google.devtools.build.lib.rules.cpp.transitions; import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.analysis.config.transitions.PatchTransition; import com.google.devtools.build.lib.rules.cpp.CppOptions; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; import com.google.devtools.build.lib.view.config.crosstool.CrosstoolConfig.LipoMode; /** * Configuration transition that turns off LIPO/FDO settings. * - * <p>Has no effect on non-LIPO-enabled configurations or the LIPO context collector - * configuration. - * + * <p>Has no effect on non-LIPO-enabled configurations or the LIPO context collector configuration. */ public final class DisableLipoTransition implements PatchTransition { - public static final DisableLipoTransition INSTANCE = new DisableLipoTransition(); + + @AutoCodec public static final DisableLipoTransition INSTANCE = new DisableLipoTransition(); private DisableLipoTransition() {} diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/transitions/EnableLipoTransition.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/transitions/EnableLipoTransition.java index 0d1295cbc5..883d59cd34 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/transitions/EnableLipoTransition.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/transitions/EnableLipoTransition.java @@ -20,6 +20,8 @@ import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.rules.cpp.CppOptions; import com.google.devtools.build.lib.rules.cpp.CppOptions.LipoConfigurationState; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization; import java.util.Objects; /** @@ -27,6 +29,7 @@ import java.util.Objects; * disabled. */ @Immutable +@AutoCodec public class EnableLipoTransition implements PatchTransition { private final Label ruleLabel; private final int hashCode; @@ -36,8 +39,14 @@ public class EnableLipoTransition implements PatchTransition { * restricting this transition to the LIPO context binary. */ public EnableLipoTransition(Label ruleLabel) { + this(ruleLabel, Objects.hashCode(ruleLabel)); + } + + @VisibleForSerialization + @AutoCodec.Instantiator + EnableLipoTransition(Label ruleLabel, int hashCode) { this.ruleLabel = ruleLabel; - this.hashCode = Objects.hashCode(ruleLabel); + this.hashCode = hashCode; } @Override diff --git a/src/main/java/com/google/devtools/build/lib/rules/python/PythonVersionTransition.java b/src/main/java/com/google/devtools/build/lib/rules/python/PythonVersionTransition.java index cc0eb47f5d..01ce26ab5d 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/python/PythonVersionTransition.java +++ b/src/main/java/com/google/devtools/build/lib/rules/python/PythonVersionTransition.java @@ -16,11 +16,13 @@ package com.google.devtools.build.lib.rules.python; import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.analysis.config.transitions.PatchTransition; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; /** - * A configuration transition that sets the Python version by setting - * {@link PythonOptions#forcePython}. + * A configuration transition that sets the Python version by setting {@link + * PythonOptions#forcePython}. */ +@AutoCodec public class PythonVersionTransition implements PatchTransition { private final PythonVersion defaultVersion; |