aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/AutoCodec.java16
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/AutoCodecProcessor.java45
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/AutoCodecUtil.java12
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;
}