diff options
Diffstat (limited to 'src')
15 files changed, 28 insertions, 96 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/actions/ArtifactOwner.java b/src/main/java/com/google/devtools/build/lib/actions/ArtifactOwner.java index 36f7b24936..b8b62c91b7 100644 --- a/src/main/java/com/google/devtools/build/lib/actions/ArtifactOwner.java +++ b/src/main/java/com/google/devtools/build/lib/actions/ArtifactOwner.java @@ -29,9 +29,9 @@ public interface ArtifactOwner { * An {@link ArtifactOwner} that just returns null for its label. Only for use with resolved * source artifacts and tests. */ - @AutoCodec(strategy = AutoCodec.Strategy.SINGLETON) class NullArtifactOwner implements ArtifactOwner { - @VisibleForTesting public static final NullArtifactOwner INSTANCE = new NullArtifactOwner(); + @AutoCodec @VisibleForTesting + public static final NullArtifactOwner INSTANCE = new NullArtifactOwner(); private NullArtifactOwner() {} diff --git a/src/main/java/com/google/devtools/build/lib/actions/EmptyRunfilesSupplier.java b/src/main/java/com/google/devtools/build/lib/actions/EmptyRunfilesSupplier.java index ddab7c995e..5cc2e52789 100644 --- a/src/main/java/com/google/devtools/build/lib/actions/EmptyRunfilesSupplier.java +++ b/src/main/java/com/google/devtools/build/lib/actions/EmptyRunfilesSupplier.java @@ -18,15 +18,13 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; -import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.Strategy; import com.google.devtools.build.lib.vfs.PathFragment; import java.util.Map; /** Empty implementation of RunfilesSupplier */ -@AutoCodec(strategy = Strategy.SINGLETON) public class EmptyRunfilesSupplier implements RunfilesSupplier { - public static final EmptyRunfilesSupplier INSTANCE = new EmptyRunfilesSupplier(); + @AutoCodec public static final EmptyRunfilesSupplier INSTANCE = new EmptyRunfilesSupplier(); private EmptyRunfilesSupplier() {} diff --git a/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java b/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java index 933a1a8939..a1f02fa415 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java @@ -33,7 +33,6 @@ import com.google.devtools.build.lib.events.Location; import com.google.devtools.build.lib.packages.BuildType; 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.skyframe.serialization.autocodec.AutoCodec.Strategy; import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization; import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; @@ -73,8 +72,6 @@ import javax.annotation.Nullable; ) @AutoCodec public final class Runfiles { - public static ObjectCodec<Runfiles> CODEC = new Runfiles_AutoCodec(); - private static final Function<SymlinkEntry, Artifact> TO_ARTIFACT = new Function<SymlinkEntry, Artifact>() { @Override @@ -83,12 +80,9 @@ public final class Runfiles { } }; - @AutoCodec(strategy = Strategy.SINGLETON) @VisibleForSerialization static class DummyEmptyFilesSupplier implements EmptyFilesSupplier { - public static final ObjectCodec<DummyEmptyFilesSupplier> CODEC = - new Runfiles_DummyEmptyFilesSupplier_AutoCodec(); - public static final DummyEmptyFilesSupplier INSTANCE = new DummyEmptyFilesSupplier(); + @AutoCodec public static final DummyEmptyFilesSupplier INSTANCE = new DummyEmptyFilesSupplier(); @Override public Iterable<PathFragment> getExtraPaths(Set<PathFragment> manifestPaths) { diff --git a/src/main/java/com/google/devtools/build/lib/events/Location.java b/src/main/java/com/google/devtools/build/lib/events/Location.java index 162678dbf1..586548943b 100644 --- a/src/main/java/com/google/devtools/build/lib/events/Location.java +++ b/src/main/java/com/google/devtools/build/lib/events/Location.java @@ -15,7 +15,6 @@ package com.google.devtools.build.lib.events; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; -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; @@ -36,9 +35,6 @@ public abstract class Location implements Serializable { @AutoCodec @Immutable static final class LocationWithPathAndStartColumn extends Location { - public static final ObjectCodec<LocationWithPathAndStartColumn> CODEC = - new Location_LocationWithPathAndStartColumn_AutoCodec(); - private final PathFragment path; private final LineAndColumn startLineAndColumn; @@ -219,14 +215,14 @@ public abstract class Location implements Serializable { * "23:2" * "foo.cc:char offsets 123--456" * "char offsets 123--456" - *</pre> + * </pre> * * <p>This version replace the package's path with the relative package path. I.e., if {@code * packagePath} is equivalent to "/absolute/path/to/workspace/pack/age" and {@code * relativePackage} is equivalent to "pack/age" then the result for the 2nd character of the 23rd * line of the "foo/bar.cc" file in "pack/age" would be "pack/age/foo/bar.cc:23:2" whereas with * {@link #print()} the result would be "/absolute/path/to/workspace/pack/age/foo/bar.cc:23:2". - * + * * <p>If {@code packagePath} is not a parent of the location path, then the result of this * function is the same as the result of {@link #print()}. */ @@ -262,8 +258,6 @@ public abstract class Location implements Serializable { @AutoCodec @Immutable public static final class LineAndColumn { - public static final ObjectCodec<LineAndColumn> CODEC = new Location_LineAndColumn_AutoCodec(); - private final int line; private final int column; @@ -298,11 +292,7 @@ public abstract class Location implements Serializable { } } - @AutoCodec(strategy = AutoCodec.Strategy.SINGLETON) - @AutoCodec.VisibleForSerialization static final class BuiltinLocation extends Location { - public static final BuiltinLocation INSTANCE = new BuiltinLocation(); - private BuiltinLocation() { super(0, 0); } @@ -332,7 +322,7 @@ public abstract class Location implements Serializable { * Dummy location for built-in functions which ensures that stack traces contain "nice" location * strings. */ - public static final Location BUILTIN = BuiltinLocation.INSTANCE; + @AutoCodec public static final Location BUILTIN = new BuiltinLocation(); /** * Returns the location in the format "filename:line". @@ -343,7 +333,7 @@ public abstract class Location implements Serializable { if (location == null) { return ""; } - + StringBuilder builder = new StringBuilder(); PathFragment path = location.getPath(); if (path != null) { diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/NoProcessing.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/NoProcessing.java index 954214994a..f6a5bd0fed 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/NoProcessing.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/NoProcessing.java @@ -18,17 +18,12 @@ import com.google.devtools.build.lib.actions.ActionExecutionContext; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.ExecException; import com.google.devtools.build.lib.rules.cpp.IncludeScanner.IncludeScannerSupplier; -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.skyframe.serialization.autocodec.AutoCodec.Strategy; import javax.annotation.Nullable; /** Always performs no include processing and returns null. */ -@AutoCodec(strategy = Strategy.SINGLETON) public class NoProcessing implements IncludeProcessing { - public static final ObjectCodec<NoProcessing> CODEC = new NoProcessing_AutoCodec(); - - public static final NoProcessing INSTANCE = new NoProcessing(); + @AutoCodec public static final NoProcessing INSTANCE = new NoProcessing(); @Override public Iterable<Artifact> determineAdditionalInputs( diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupValue.java index 4454dbe339..24652583fb 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupValue.java @@ -28,7 +28,7 @@ import com.google.devtools.build.skyframe.SkyValue; */ public abstract class ContainingPackageLookupValue implements SkyValue { - public static final NoContainingPackage NONE = NoContainingPackage.INSTANCE; + @AutoCodec public static final NoContainingPackage NONE = new NoContainingPackage(); /** Returns whether there is a containing package. */ public abstract boolean hasContainingPackage(); @@ -50,10 +50,7 @@ public abstract class ContainingPackageLookupValue implements SkyValue { } /** Value indicating there is no containing package. */ - @AutoCodec(strategy = AutoCodec.Strategy.SINGLETON) public static class NoContainingPackage extends ContainingPackageLookupValue { - public static final NoContainingPackage INSTANCE = new NoContainingPackage(); - private NoContainingPackage() {} @Override diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/CoverageReportValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/CoverageReportValue.java index edb9226a11..e7522851ba 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/CoverageReportValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/CoverageReportValue.java @@ -16,7 +16,6 @@ package com.google.devtools.build.lib.skyframe; import com.google.devtools.build.lib.actions.ActionLookupValue; import com.google.devtools.build.lib.actions.Actions.GeneratingActions; -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; @@ -26,24 +25,18 @@ import com.google.devtools.build.skyframe.SkyFunctionName; public class CoverageReportValue extends ActionLookupValue { // There should only ever be one CoverageReportValue value in the graph. - public static final CoverageReportKey COVERAGE_REPORT_KEY = CoverageReportKey.INSTANCE; + @AutoCodec public static final CoverageReportKey COVERAGE_REPORT_KEY = new CoverageReportKey(); CoverageReportValue(GeneratingActions generatingActions, boolean removeActionsAfterEvaluation) { super(generatingActions, removeActionsAfterEvaluation); } - @AutoCodec(strategy = AutoCodec.Strategy.SINGLETON) static class CoverageReportKey extends ActionLookupKey { - static final CoverageReportKey INSTANCE = new CoverageReportKey(); - static final ObjectCodec<CoverageReportKey> CODEC = - new CoverageReportValue_CoverageReportKey_AutoCodec(); - private CoverageReportKey() {} @Override public SkyFunctionName functionName() { return SkyFunctions.COVERAGE_REPORT; } - } } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupValue.java index 0c78c40146..c76a7ad8e1 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupValue.java @@ -38,12 +38,17 @@ import com.google.devtools.build.skyframe.SkyValue; */ public abstract class PackageLookupValue implements SkyValue { + @AutoCodec public static final NoBuildFilePackageLookupValue NO_BUILD_FILE_VALUE = - NoBuildFilePackageLookupValue.INSTANCE; + new NoBuildFilePackageLookupValue(); + + @AutoCodec public static final DeletedPackageLookupValue DELETED_PACKAGE_VALUE = - DeletedPackageLookupValue.INSTANCE; + new DeletedPackageLookupValue(); + + @AutoCodec public static final NoRepositoryPackageLookupValue NO_SUCH_REPOSITORY_VALUE = - NoRepositoryPackageLookupValue.INSTANCE; + new NoRepositoryPackageLookupValue(); enum ErrorReason { /** There is no BUILD file. */ @@ -191,10 +196,7 @@ public abstract class PackageLookupValue implements SkyValue { } /** Marker value for no build file found. */ - @AutoCodec(strategy = AutoCodec.Strategy.SINGLETON) public static class NoBuildFilePackageLookupValue extends UnsuccessfulPackageLookupValue { - static final NoBuildFilePackageLookupValue INSTANCE = new NoBuildFilePackageLookupValue(); - private NoBuildFilePackageLookupValue() { } @@ -317,10 +319,7 @@ public abstract class PackageLookupValue implements SkyValue { } /** Marker value for a deleted package. */ - @AutoCodec(strategy = AutoCodec.Strategy.SINGLETON) public static class DeletedPackageLookupValue extends UnsuccessfulPackageLookupValue { - static final DeletedPackageLookupValue INSTANCE = new DeletedPackageLookupValue(); - private DeletedPackageLookupValue() { } @@ -339,10 +338,7 @@ public abstract class PackageLookupValue implements SkyValue { * Marker value for repository we could not find. This can happen when looking for a label that * specifies a non-existent repository. */ - @AutoCodec(strategy = AutoCodec.Strategy.SINGLETON) public static class NoRepositoryPackageLookupValue extends UnsuccessfulPackageLookupValue { - static final NoRepositoryPackageLookupValue INSTANCE = new NoRepositoryPackageLookupValue(); - private NoRepositoryPackageLookupValue() {} @Override 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 02030e45e9..0bbff1c424 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 @@ -16,7 +16,6 @@ package com.google.devtools.build.lib.skyframe; 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; @@ -53,11 +52,9 @@ public class WorkspaceStatusValue extends ActionLookupValue { } /** {@link SkyKey} for {@link WorkspaceStatusValue}. */ - @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(); + @AutoCodec @AutoCodec.VisibleForSerialization + static final BuildInfoKey INSTANCE = new BuildInfoKey(); private BuildInfoKey() {} diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/AutoCodec.java b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/AutoCodec.java index 867dbca164..e6a687d773 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/AutoCodec.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/AutoCodec.java @@ -70,12 +70,6 @@ public @interface AutoCodec { * instance for deserialization. */ PUBLIC_FIELDS, - /** - * For use with classes that are singleton. - * - * <p>The serialized class must have a codec accessible, static INSTANCE field. - */ - SINGLETON } /** diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/AutoCodecProcessor.java b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/AutoCodecProcessor.java index d7c2e8a7fd..250e391adf 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/AutoCodecProcessor.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/AutoCodecProcessor.java @@ -109,9 +109,6 @@ public class AutoCodecProcessor extends AbstractProcessor { case PUBLIC_FIELDS: codecClassBuilder = buildClassWithPublicFieldsStrategy(encodedType); break; - case SINGLETON: - codecClassBuilder = buildClassWithSingletonStrategy(encodedType, env); - break; default: throw new IllegalArgumentException("Unknown strategy: " + annotation.strategy()); } @@ -142,6 +139,7 @@ public class AutoCodecProcessor extends AbstractProcessor { return true; } + @SuppressWarnings("MutableConstantField") private static final Collection<Modifier> REQUIRED_SINGLETON_MODIFIERS = ImmutableList.of(Modifier.STATIC, Modifier.FINAL); @@ -532,20 +530,6 @@ public class AutoCodecProcessor extends AbstractProcessor { return Optional.empty(); } - private static TypeSpec.Builder buildClassWithSingletonStrategy( - TypeElement encodedType, ProcessingEnvironment env) { - TypeSpec.Builder codecClassBuilder = - AutoCodecUtil.initializeCodecClassBuilder(encodedType, env); - // Serialization is a no-op. - codecClassBuilder.addMethod( - AutoCodecUtil.initializeSerializeMethodBuilder(encodedType, env).build()); - MethodSpec.Builder deserializeMethodBuilder = - AutoCodecUtil.initializeDeserializeMethodBuilder(encodedType, env); - deserializeMethodBuilder.addStatement("return $T.INSTANCE", TypeName.get(encodedType.asType())); - codecClassBuilder.addMethod(deserializeMethodBuilder.build()); - return codecClassBuilder; - } - /** True when {@code type} has the same type as {@code clazz}. */ private boolean matchesType(TypeMirror type, Class<?> clazz) { return env.getTypeUtils() diff --git a/src/main/java/com/google/devtools/build/skyframe/EmptySkyValue.java b/src/main/java/com/google/devtools/build/skyframe/EmptySkyValue.java index bd31c4f903..878dd67bf9 100644 --- a/src/main/java/com/google/devtools/build/skyframe/EmptySkyValue.java +++ b/src/main/java/com/google/devtools/build/skyframe/EmptySkyValue.java @@ -21,9 +21,8 @@ import java.io.ObjectOutputStream; * A SkyValue with no attached data. Preferable to a specialized empty value class to minimize * bloat. */ -@AutoCodec(strategy = AutoCodec.Strategy.SINGLETON) public final class EmptySkyValue implements SkyValue { - public static final EmptySkyValue INSTANCE = new EmptySkyValue(); + @AutoCodec public static final EmptySkyValue INSTANCE = new EmptySkyValue(); private EmptySkyValue() {} diff --git a/src/main/java/com/google/devtools/build/skyframe/ErrorTransienceValue.java b/src/main/java/com/google/devtools/build/skyframe/ErrorTransienceValue.java index 2d6de966bd..6d44fbe47c 100644 --- a/src/main/java/com/google/devtools/build/skyframe/ErrorTransienceValue.java +++ b/src/main/java/com/google/devtools/build/skyframe/ErrorTransienceValue.java @@ -21,11 +21,10 @@ import java.io.ObjectOutputStream; * A value that represents "error transience", i.e. anything which may have caused an unexpected * failure. Is not equal to anything, including itself, in order to force re-evaluation. */ -@AutoCodec(strategy = AutoCodec.Strategy.SINGLETON) public final class ErrorTransienceValue implements SkyValue { public static final SkyFunctionName FUNCTION_NAME = SkyFunctionName.create("ERROR_TRANSIENCE"); public static final SkyKey KEY = LegacySkyKey.create(FUNCTION_NAME, "ERROR_TRANSIENCE"); - public static final ErrorTransienceValue INSTANCE = new ErrorTransienceValue(); + @AutoCodec public static final ErrorTransienceValue INSTANCE = new ErrorTransienceValue(); private ErrorTransienceValue() {} diff --git a/src/test/java/com/google/devtools/build/lib/actions/util/ActionsTestUtil.java b/src/test/java/com/google/devtools/build/lib/actions/util/ActionsTestUtil.java index 04aa0d77ee..e3bd837086 100644 --- a/src/test/java/com/google/devtools/build/lib/actions/util/ActionsTestUtil.java +++ b/src/test/java/com/google/devtools/build/lib/actions/util/ActionsTestUtil.java @@ -65,7 +65,6 @@ import com.google.devtools.build.lib.events.Reporter; import com.google.devtools.build.lib.exec.SingleBuildFileCache; import com.google.devtools.build.lib.packages.AspectDescriptor; import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; -import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.Strategy; import com.google.devtools.build.lib.util.FileType; import com.google.devtools.build.lib.util.ResourceUsage; import com.google.devtools.build.lib.util.io.FileOutErr; @@ -267,10 +266,8 @@ public final class ActionsTestUtil { null, null); - @AutoCodec(strategy = Strategy.SINGLETON) static class NullArtifactOwner implements ArtifactOwner { - public static final ActionsTestUtil.NullArtifactOwner INSTANCE = - new ActionsTestUtil.NullArtifactOwner(); + private NullArtifactOwner() {} @Override public Label getLabel() { @@ -278,7 +275,7 @@ public final class ActionsTestUtil { } } - public static final ArtifactOwner NULL_ARTIFACT_OWNER = NullArtifactOwner.INSTANCE; + @AutoCodec public static final ArtifactOwner NULL_ARTIFACT_OWNER = new NullArtifactOwner(); /** An unchecked exception class for action conflicts. */ public static class UncheckedActionConflictException extends RuntimeException { diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java b/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java index 6fc7684371..40c74d0bab 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java @@ -111,8 +111,10 @@ import org.junit.Before; * The common code that's shared between various builder tests. */ public abstract class TimestampBuilderTestCase extends FoundationTestCase { + @AutoCodec protected static final ActionLookupValue.ActionLookupKey ACTION_LOOKUP_KEY = new SingletonActionLookupKey(); + protected static final Predicate<Action> ALWAYS_EXECUTE_FILTER = Predicates.alwaysTrue(); protected static final String CYCLE_MSG = "Yarrrr, there be a cycle up in here"; @@ -501,10 +503,7 @@ public abstract class TimestampBuilderTestCase extends FoundationTestCase { } } - @AutoCodec(strategy = AutoCodec.Strategy.SINGLETON) static class SingletonActionLookupKey extends ActionLookupValue.ActionLookupKey { - public static final SingletonActionLookupKey INSTANCE = new SingletonActionLookupKey(); - @Override public SkyFunctionName functionName() { return SkyFunctions.CONFIGURED_TARGET; |