aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build
diff options
context:
space:
mode:
authorGravatar cpeyser <cpeyser@google.com>2018-02-20 10:28:30 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-02-20 10:30:29 -0800
commitdd090a6e8825093e7e5364ed49f16ba68f0fe54c (patch)
tree488f70bc50dd4e9e1270f8e72695abe13a00fe1e /src/main/java/com/google/devtools/build
parentd399df930e089f23390b09f42f4f5b47fce02977 (diff)
Some autocodec changes required to serialize SpawnAction: double field and CharSequence fields.
PiperOrigin-RevId: 186323424
Diffstat (limited to 'src/main/java/com/google/devtools/build')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/AutoCodecProcessor.java21
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/Marshallers.java30
2 files changed, 42 insertions, 9 deletions
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 38bcf24994..c3d14df9f2 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
@@ -222,6 +222,12 @@ public class AutoCodecProcessor extends AbstractProcessor {
UnsafeProvider.class,
parameter.getSimpleName());
break;
+ case DOUBLE:
+ serializeBuilder.addStatement(
+ "codedOut.writeDoubleNoTag($T.getInstance().getDouble(input, $L_offset))",
+ UnsafeProvider.class,
+ parameter.getSimpleName());
+ break;
case ARRAY:
// fall through
case DECLARED:
@@ -291,6 +297,9 @@ public class AutoCodecProcessor extends AbstractProcessor {
case INT:
serializeBuilder.addStatement("codedOut.writeInt32NoTag($L)", getter);
break;
+ case DOUBLE:
+ serializeBuilder.addStatement("codedOut.writeDoubleNoTag($L)", getter);
+ break;
case ARRAY:
// fall through
case DECLARED:
@@ -350,10 +359,10 @@ public class AutoCodecProcessor extends AbstractProcessor {
case INT:
serializeBuilder.addStatement("codedOut.writeInt32NoTag($L)", paramAccessor);
break;
- case ARRAY:
- marshallers.writeSerializationCode(
- new Marshaller.Context(serializeBuilder, parameter.asType(), paramAccessor));
+ case DOUBLE:
+ serializeBuilder.addStatement("codedOut.writeDoubleNoTag($L)", paramAccessor);
break;
+ case ARRAY:
case DECLARED:
marshallers.writeSerializationCode(
new Marshaller.Context(serializeBuilder, parameter.asType(), paramAccessor));
@@ -384,10 +393,10 @@ public class AutoCodecProcessor extends AbstractProcessor {
case INT:
builder.addStatement("int $L = codedIn.readInt32()", paramName);
break;
- case ARRAY:
- marshallers.writeDeserializationCode(
- new Marshaller.Context(builder, parameter.asType(), paramName));
+ case DOUBLE:
+ builder.addStatement("double $L = codedIn.readDouble()", paramName);
break;
+ case ARRAY:
case DECLARED:
marshallers.writeDeserializationCode(
new Marshaller.Context(builder, parameter.asType(), paramName));
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/Marshallers.java b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/Marshallers.java
index bb8e6e9495..d1a04da8c3 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/Marshallers.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/Marshallers.java
@@ -244,6 +244,11 @@ class Marshallers {
}
};
+ private static void addStringDeserializationCode(Context context) {
+ context.builder.addStatement(
+ "$L = $T.asciiOptimized().deserialize(context, codedIn)", context.name, StringCodecs.class);
+ }
+
private final Marshaller stringMarshaller =
new Marshaller() {
@Override
@@ -261,10 +266,28 @@ class Marshallers {
@Override
public void addDeserializationCode(Context context) {
+ addStringDeserializationCode(context);
+ }
+ };
+
+ private final Marshaller charSequenceMarshaller =
+ new Marshaller() {
+ @Override
+ public boolean matches(DeclaredType type) {
+ return matchesType(type, CharSequence.class);
+ }
+
+ @Override
+ public void addSerializationCode(Context context) {
context.builder.addStatement(
- "$L = $T.asciiOptimized().deserialize(context, codedIn)",
- context.name,
- StringCodecs.class);
+ "$T.asciiOptimized().serialize(context, $L.toString(), codedOut)",
+ StringCodecs.class,
+ context.name);
+ }
+
+ @Override
+ public void addDeserializationCode(Context context) {
+ addStringDeserializationCode(context);
}
};
@@ -913,6 +936,7 @@ class Marshallers {
ImmutableList.of(
enumMarshaller,
stringMarshaller,
+ charSequenceMarshaller,
optionalMarshaller,
supplierMarshaller,
uuidMarshller,