diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec')
3 files changed, 22 insertions, 51 deletions
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 6901b9217d..302f1e9a49 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 @@ -35,7 +35,7 @@ import java.lang.annotation.Target; * * <p>If applied to a field (which must be static and final), the field is stored as a "constant" * allowing for trivial serialization of it as an integer tag (see {@code CodecScanner} and - * {@code ObjectCodecRegistery}). In order to do that, a trivial associated "RegisteredSingleton" + * {@code ObjectCodecRegistry}). In order to do that, a trivial associated "RegisteredSingleton" * class is generated. */ @Target({ElementType.TYPE, ElementType.FIELD}) @@ -89,20 +89,6 @@ public @interface AutoCodec { Strategy strategy() default Strategy.INSTANTIATOR; - /** Whether to start memoizing values below this codec. */ - enum Memoization { - /** Do not start memoization, but also do not disable memoization if it is already happening. */ - UNCHANGED, - /** - * Start memoizing. Memoization is assumed to always need a Skylark "Mutability" object. If this - * package does not have access to the {@link com.google.devtools.build.lib.syntax.Mutability} - * class, memoization cannot be started here. - */ - START_MEMOIZING - } - - Memoization memoization() default Memoization.UNCHANGED; - /** * Signals that the annotated element is only visible for use by serialization. It should not be * used by other callers. 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 fb945a93b7..395519d279 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 @@ -25,7 +25,6 @@ import com.google.common.collect.Iterables; import com.google.devtools.build.lib.skyframe.serialization.CodecScanningConstants; import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec; import com.google.devtools.build.lib.skyframe.serialization.SerializationException; -import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.Memoization; import com.google.devtools.build.lib.skyframe.serialization.autocodec.SerializationCodeGenerator.Marshaller; import com.squareup.javapoet.ClassName; import com.squareup.javapoet.FieldSpec; @@ -104,16 +103,15 @@ public class AutoCodecProcessor extends AbstractProcessor { if (element instanceof TypeElement) { TypeElement encodedType = (TypeElement) element; TypeSpec.Builder codecClassBuilder; - boolean startMemoizing = annotation.memoization() == Memoization.START_MEMOIZING; switch (annotation.strategy()) { case INSTANTIATOR: - codecClassBuilder = buildClassWithInstantiatorStrategy(encodedType, startMemoizing); + codecClassBuilder = buildClassWithInstantiatorStrategy(encodedType); break; case PUBLIC_FIELDS: - codecClassBuilder = buildClassWithPublicFieldsStrategy(encodedType, startMemoizing); + codecClassBuilder = buildClassWithPublicFieldsStrategy(encodedType); break; case AUTO_VALUE_BUILDER: - codecClassBuilder = buildClassWithAutoValueBuilderStrategy(encodedType, startMemoizing); + codecClassBuilder = buildClassWithAutoValueBuilderStrategy(encodedType); break; default: throw new IllegalArgumentException("Unknown strategy: " + annotation.strategy()); @@ -173,8 +171,7 @@ public class AutoCodecProcessor extends AbstractProcessor { .build(); } - private TypeSpec.Builder buildClassWithInstantiatorStrategy( - TypeElement encodedType, boolean startMemoizing) { + private TypeSpec.Builder buildClassWithInstantiatorStrategy(TypeElement encodedType) { ExecutableElement constructor = selectInstantiator(encodedType); List<? extends VariableElement> fields = constructor.getParameters(); @@ -183,15 +180,14 @@ public class AutoCodecProcessor extends AbstractProcessor { if (encodedType.getAnnotation(AutoValue.class) == null) { initializeUnsafeOffsets(codecClassBuilder, encodedType, fields); - codecClassBuilder.addMethod( - buildSerializeMethodWithInstantiator(encodedType, fields, startMemoizing)); + codecClassBuilder.addMethod(buildSerializeMethodWithInstantiator(encodedType, fields)); } else { codecClassBuilder.addMethod( - buildSerializeMethodWithInstantiatorForAutoValue(encodedType, fields, startMemoizing)); + buildSerializeMethodWithInstantiatorForAutoValue(encodedType, fields)); } MethodSpec.Builder deserializeBuilder = - AutoCodecUtil.initializeDeserializeMethodBuilder(encodedType, startMemoizing, env); + AutoCodecUtil.initializeDeserializeMethodBuilder(encodedType, env); buildDeserializeBody(deserializeBuilder, fields); addReturnNew(deserializeBuilder, encodedType, constructor, /*builderVar=*/ null, env); codecClassBuilder.addMethod(deserializeBuilder.build()); @@ -199,8 +195,7 @@ public class AutoCodecProcessor extends AbstractProcessor { return codecClassBuilder; } - private TypeSpec.Builder buildClassWithAutoValueBuilderStrategy( - TypeElement encodedType, boolean startMemoizing) { + private TypeSpec.Builder buildClassWithAutoValueBuilderStrategy(TypeElement encodedType) { TypeElement builderType = findBuilderType(encodedType); List<ExecutableElement> getters = findGettersFromType(encodedType, builderType); ExecutableElement builderCreationMethod = findBuilderCreationMethod(encodedType, builderType); @@ -208,7 +203,7 @@ public class AutoCodecProcessor extends AbstractProcessor { TypeSpec.Builder codecClassBuilder = AutoCodecUtil.initializeCodecClassBuilder(encodedType, env); MethodSpec.Builder serializeBuilder = - AutoCodecUtil.initializeSerializeMethodBuilder(encodedType, startMemoizing, env); + AutoCodecUtil.initializeSerializeMethodBuilder(encodedType, env); for (ExecutableElement getter : getters) { marshallers.writeSerializationCode( new Marshaller.Context( @@ -218,7 +213,7 @@ public class AutoCodecProcessor extends AbstractProcessor { } codecClassBuilder.addMethod(serializeBuilder.build()); MethodSpec.Builder deserializeBuilder = - AutoCodecUtil.initializeDeserializeMethodBuilder(encodedType, startMemoizing, env); + AutoCodecUtil.initializeDeserializeMethodBuilder(encodedType, env); String builderVarName = buildDeserializeBodyWithBuilder( encodedType, builderType, deserializeBuilder, getters, builderCreationMethod); @@ -519,9 +514,9 @@ public class AutoCodecProcessor extends AbstractProcessor { } private MethodSpec buildSerializeMethodWithInstantiator( - TypeElement encodedType, List<? extends VariableElement> fields, boolean startMemoizing) { + TypeElement encodedType, List<? extends VariableElement> fields) { MethodSpec.Builder serializeBuilder = - AutoCodecUtil.initializeSerializeMethodBuilder(encodedType, startMemoizing, env); + AutoCodecUtil.initializeSerializeMethodBuilder(encodedType, env); for (VariableElement parameter : fields) { Optional<FieldValueAndClass> hasField = getFieldByNameRecursive(encodedType, parameter.getSimpleName().toString()); @@ -624,17 +619,16 @@ public class AutoCodecProcessor extends AbstractProcessor { } private MethodSpec buildSerializeMethodWithInstantiatorForAutoValue( - TypeElement encodedType, List<? extends VariableElement> fields, boolean startMemoizing) { + TypeElement encodedType, List<? extends VariableElement> fields) { MethodSpec.Builder serializeBuilder = - AutoCodecUtil.initializeSerializeMethodBuilder(encodedType, startMemoizing, env); + AutoCodecUtil.initializeSerializeMethodBuilder(encodedType, env); for (VariableElement parameter : fields) { addSerializeParameterWithGetter(encodedType, parameter, serializeBuilder); } return serializeBuilder.build(); } - private TypeSpec.Builder buildClassWithPublicFieldsStrategy( - TypeElement encodedType, boolean startMemoizing) { + private TypeSpec.Builder buildClassWithPublicFieldsStrategy(TypeElement encodedType) { TypeSpec.Builder codecClassBuilder = AutoCodecUtil.initializeCodecClassBuilder(encodedType, env); ImmutableList<? extends VariableElement> publicFields = @@ -642,10 +636,9 @@ public class AutoCodecProcessor extends AbstractProcessor { .stream() .filter(this::isPublicField) .collect(toImmutableList()); - codecClassBuilder.addMethod( - buildSerializeMethodWithPublicFields(encodedType, publicFields, startMemoizing)); + codecClassBuilder.addMethod(buildSerializeMethodWithPublicFields(encodedType, publicFields)); MethodSpec.Builder deserializeBuilder = - AutoCodecUtil.initializeDeserializeMethodBuilder(encodedType, startMemoizing, env); + AutoCodecUtil.initializeDeserializeMethodBuilder(encodedType, env); buildDeserializeBody(deserializeBuilder, publicFields); addInstantiatePopulateFieldsAndReturn(deserializeBuilder, encodedType, publicFields); codecClassBuilder.addMethod(deserializeBuilder.build()); @@ -661,9 +654,9 @@ public class AutoCodecProcessor extends AbstractProcessor { } private MethodSpec buildSerializeMethodWithPublicFields( - TypeElement encodedType, List<? extends VariableElement> fields, boolean startMemoizing) { + TypeElement encodedType, List<? extends VariableElement> fields) { MethodSpec.Builder serializeBuilder = - AutoCodecUtil.initializeSerializeMethodBuilder(encodedType, startMemoizing, env); + AutoCodecUtil.initializeSerializeMethodBuilder(encodedType, env); for (VariableElement parameter : fields) { String paramAccessor = "input." + parameter.getSimpleName(); marshallers.writeSerializationCode( diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/AutoCodecUtil.java b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/AutoCodecUtil.java index 2ba6d9b2c2..34925eecb9 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/AutoCodecUtil.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/AutoCodecUtil.java @@ -69,10 +69,9 @@ class AutoCodecUtil { * Initializes the deserialize method. * * @param encodedType type being serialized - * @param startMemoizing whether memoization should start in this method. */ static MethodSpec.Builder initializeSerializeMethodBuilder( - TypeElement encodedType, boolean startMemoizing, ProcessingEnvironment env) { + TypeElement encodedType, ProcessingEnvironment env) { MethodSpec.Builder builder = MethodSpec.methodBuilder("serialize") .addModifiers(Modifier.PUBLIC) @@ -83,9 +82,6 @@ class AutoCodecUtil { .addParameter(SerializationContext.class, "context") .addParameter(TypeName.get(env.getTypeUtils().erasure(encodedType.asType())), "input") .addParameter(CodedOutputStream.class, "codedOut"); - if (startMemoizing) { - builder.addStatement("context = context.getMemoizingContext()"); - } return builder; } @@ -93,10 +89,9 @@ class AutoCodecUtil { * Initializes the deserialize method. * * @param encodedType type being serialized - * @param startMemoizing whether memoization should start in this method. */ static MethodSpec.Builder initializeDeserializeMethodBuilder( - TypeElement encodedType, boolean startMemoizing, ProcessingEnvironment env) { + TypeElement encodedType, ProcessingEnvironment env) { MethodSpec.Builder builder = MethodSpec.methodBuilder("deserialize") .addModifiers(Modifier.PUBLIC) @@ -106,9 +101,6 @@ class AutoCodecUtil { .addException(IOException.class) .addParameter(DeserializationContext.class, "context") .addParameter(CodedInputStream.class, "codedIn"); - if (startMemoizing) { - builder.addStatement("context = context.getMemoizingContext()"); - } return builder; } |