aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/google/devtools/build/lib/BUILD10
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/BUILD2
-rw-r--r--src/main/java/com/google/devtools/build/lib/collect/BUILD1
-rw-r--r--src/main/java/com/google/devtools/build/lib/collect/IterableCodecs.java97
-rw-r--r--src/main/java/com/google/devtools/build/lib/collect/IterablesChain.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/collect/nestedset/BUILD16
-rw-r--r--src/main/java/com/google/devtools/build/lib/collect/nestedset/NestedSetSerializer.java56
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/BUILD2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/genrule/BUILD1
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/BUILD2
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/serialization/BUILD1
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/serialization/JavaSerializableCodec.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/BUILD6
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/Marshallers.java98
-rw-r--r--src/test/java/com/google/devtools/build/lib/BUILD2
-rw-r--r--src/test/java/com/google/devtools/build/lib/collect/nestedset/NestedSetCodecTest.java65
16 files changed, 129 insertions, 240 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/BUILD b/src/main/java/com/google/devtools/build/lib/BUILD
index cfa53797cf..528d15aca2 100644
--- a/src/main/java/com/google/devtools/build/lib/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/BUILD
@@ -398,7 +398,6 @@ java_library(
"//src/main/java/com/google/devtools/build/lib/collect",
"//src/main/java/com/google/devtools/build/lib/collect/nestedset",
"//src/main/java/com/google/devtools/build/lib/concurrent",
- "//src/main/java/com/google/devtools/build/lib/skyframe/serialization",
"//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec",
"//src/main/java/com/google/devtools/build/lib/vfs",
"//src/main/java/com/google/devtools/build/skyframe",
@@ -443,7 +442,6 @@ java_library(
":transitive-info-provider",
"//src/main/java/com/google/devtools/build/lib/cmdline",
"//src/main/java/com/google/devtools/build/lib/concurrent",
- "//src/main/java/com/google/devtools/build/lib/skyframe/serialization",
"//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec",
"//third_party:guava",
],
@@ -535,13 +533,11 @@ java_library(
"//src/main/java/com/google/devtools/build/lib/collect",
"//src/main/java/com/google/devtools/build/lib/collect/compacthashset",
"//src/main/java/com/google/devtools/build/lib/collect/nestedset",
- "//src/main/java/com/google/devtools/build/lib/collect/nestedset:serialization",
"//src/main/java/com/google/devtools/build/lib/concurrent",
"//src/main/java/com/google/devtools/build/lib/graph",
"//src/main/java/com/google/devtools/build/lib/profiler",
"//src/main/java/com/google/devtools/build/lib/profiler/memory:current_rule_tracker",
"//src/main/java/com/google/devtools/build/lib/shell",
- "//src/main/java/com/google/devtools/build/lib/skyframe/serialization",
"//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec",
"//src/main/java/com/google/devtools/build/lib/vfs",
"//src/main/java/com/google/devtools/build/skyframe",
@@ -611,7 +607,6 @@ java_library(
"//src/main/java/com/google/devtools/build/lib/rules/genrule",
"//src/main/java/com/google/devtools/build/lib/rules/objc",
"//src/main/java/com/google/devtools/build/lib/rules/platform",
- "//src/main/java/com/google/devtools/build/lib/skyframe/serialization",
"//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec",
"//src/main/java/com/google/devtools/build/lib/vfs",
"//src/main/java/com/google/devtools/build/skyframe",
@@ -817,7 +812,6 @@ java_library(
"//src/main/java/com/google/devtools/build/lib/collect",
"//src/main/java/com/google/devtools/build/lib/collect/nestedset",
"//src/main/java/com/google/devtools/build/lib/concurrent",
- "//src/main/java/com/google/devtools/build/lib/skyframe/serialization",
"//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec",
"//src/main/java/com/google/devtools/build/lib/vfs",
"//src/main/java/com/google/devtools/common/options",
@@ -981,11 +975,9 @@ java_library(
"//src/main/java/com/google/devtools/build/lib/cmdline",
"//src/main/java/com/google/devtools/build/lib/collect",
"//src/main/java/com/google/devtools/build/lib/collect/nestedset",
- "//src/main/java/com/google/devtools/build/lib/collect/nestedset:serialization",
"//src/main/java/com/google/devtools/build/lib/concurrent",
"//src/main/java/com/google/devtools/build/lib/rules/cpp",
"//src/main/java/com/google/devtools/build/lib/shell",
- "//src/main/java/com/google/devtools/build/lib/skyframe/serialization",
"//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec",
"//src/main/java/com/google/devtools/build/lib/vfs",
"//src/main/java/com/google/devtools/common/options",
@@ -1084,7 +1076,6 @@ java_library(
"//src/main/java/com/google/devtools/build/lib/concurrent",
"//src/main/java/com/google/devtools/build/lib/rules/config",
"//src/main/java/com/google/devtools/build/lib/rules/cpp",
- "//src/main/java/com/google/devtools/build/lib/skyframe/serialization",
"//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec",
"//src/main/java/com/google/devtools/build/lib/vfs",
"//src/main/java/com/google/devtools/common/options",
@@ -1113,7 +1104,6 @@ java_library(
"//src/main/java/com/google/devtools/build/lib/collect/nestedset",
"//src/main/java/com/google/devtools/build/lib/concurrent",
"//src/main/java/com/google/devtools/build/lib/rules/cpp",
- "//src/main/java/com/google/devtools/build/lib/skyframe/serialization",
"//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec",
"//src/main/java/com/google/devtools/build/lib/vfs",
"//src/main/java/com/google/devtools/common/options",
diff --git a/src/main/java/com/google/devtools/build/lib/actions/BUILD b/src/main/java/com/google/devtools/build/lib/actions/BUILD
index 35bea729dc..71a951558f 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/actions/BUILD
@@ -34,11 +34,9 @@ java_library(
"//src/main/java/com/google/devtools/build/lib/collect",
"//src/main/java/com/google/devtools/build/lib/collect/nestedset",
"//src/main/java/com/google/devtools/build/lib/collect/nestedset:fingerprint_cache",
- "//src/main/java/com/google/devtools/build/lib/collect/nestedset:serialization",
"//src/main/java/com/google/devtools/build/lib/concurrent",
"//src/main/java/com/google/devtools/build/lib/profiler",
"//src/main/java/com/google/devtools/build/lib/shell",
- "//src/main/java/com/google/devtools/build/lib/skyframe/serialization",
"//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec",
"//src/main/java/com/google/devtools/build/lib/vfs",
"//src/main/java/com/google/devtools/build/skyframe",
diff --git a/src/main/java/com/google/devtools/build/lib/collect/BUILD b/src/main/java/com/google/devtools/build/lib/collect/BUILD
index f8c7071081..e54e3266d1 100644
--- a/src/main/java/com/google/devtools/build/lib/collect/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/collect/BUILD
@@ -15,6 +15,7 @@ java_library(
deps = [
"//src/main/java/com/google/devtools/build/lib/collect/nestedset",
"//src/main/java/com/google/devtools/build/lib/concurrent",
+ "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec",
"//third_party:guava",
"//third_party:jsr305",
],
diff --git a/src/main/java/com/google/devtools/build/lib/collect/IterableCodecs.java b/src/main/java/com/google/devtools/build/lib/collect/IterableCodecs.java
new file mode 100644
index 0000000000..e61055ecfc
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/collect/IterableCodecs.java
@@ -0,0 +1,97 @@
+// Copyright 2018 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.devtools.build.lib.collect;
+
+import com.google.common.collect.FluentIterable;
+import com.google.common.collect.ImmutableList;
+import com.google.devtools.build.lib.skyframe.serialization.DeserializationContext;
+import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
+import com.google.devtools.build.lib.skyframe.serialization.SerializationContext;
+import com.google.devtools.build.lib.skyframe.serialization.SerializationException;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
+import com.google.protobuf.CodedInputStream;
+import com.google.protobuf.CodedOutputStream;
+import java.io.IOException;
+
+@SuppressWarnings("rawtypes")
+class IterableCodecs {
+ static class FluentIterableCodec implements ObjectCodec<FluentIterable> {
+ @Override
+ public Class<FluentIterable> getEncodedClass() {
+ return FluentIterable.class;
+ }
+
+ @Override
+ public void serialize(
+ SerializationContext context, FluentIterable obj, CodedOutputStream codedOut)
+ throws SerializationException, IOException {
+ IterableCodecs.serialize(context, obj, codedOut);
+ }
+
+ @Override
+ public FluentIterable deserialize(DeserializationContext context, CodedInputStream codedIn)
+ throws SerializationException, IOException {
+ return FluentIterable.from(IterableCodecs.deserialize(context, codedIn));
+ }
+ }
+
+ static class IterablesChainCodec implements ObjectCodec<IterablesChain> {
+ @Override
+ public Class<IterablesChain> getEncodedClass() {
+ return IterablesChain.class;
+ }
+
+ @Override
+ public void serialize(
+ SerializationContext context, IterablesChain obj, CodedOutputStream codedOut)
+ throws SerializationException, IOException {
+ IterableCodecs.serialize(context, obj, codedOut);
+ }
+
+ @Override
+ public IterablesChain deserialize(DeserializationContext context, CodedInputStream codedIn)
+ throws SerializationException, IOException {
+ return new IterablesChain<>(IterableCodecs.deserialize(context, codedIn));
+ }
+ }
+
+ private static void serialize(
+ SerializationContext context, Iterable obj, CodedOutputStream codedOut)
+ throws SerializationException, IOException {
+ for (Object elt : obj) {
+ context.serialize(elt, codedOut);
+ }
+ context.serialize(DONE, codedOut);
+ }
+
+ private static ImmutableList<Object> deserialize(
+ DeserializationContext context, CodedInputStream codedIn)
+ throws SerializationException, IOException {
+ ImmutableList.Builder<Object> builder = ImmutableList.builder();
+ for (Object next = context.deserialize(codedIn);
+ next != DONE;
+ next = context.deserialize(codedIn)) {
+ builder.add(next);
+ }
+ return builder.build();
+ }
+
+ /**
+ * An object used to mark the end of the sequence of elements.
+ *
+ * <p>We use this instead of emitting a count to avoid possibly running deduplication twice.
+ */
+ @AutoCodec @AutoCodec.VisibleForSerialization static final Object DONE = new Object();
+}
diff --git a/src/main/java/com/google/devtools/build/lib/collect/IterablesChain.java b/src/main/java/com/google/devtools/build/lib/collect/IterablesChain.java
index 5fa4f8621e..fe0f4bbe0c 100644
--- a/src/main/java/com/google/devtools/build/lib/collect/IterablesChain.java
+++ b/src/main/java/com/google/devtools/build/lib/collect/IterablesChain.java
@@ -40,7 +40,7 @@ public final class IterablesChain<T> implements Iterable<T> {
private final Iterable<T> chain;
- private IterablesChain(Iterable<T> chain) {
+ IterablesChain(Iterable<T> chain) {
this.chain = chain;
}
@@ -103,7 +103,7 @@ public final class IterablesChain<T> implements Iterable<T> {
}
/**
- * If this is called, the the resulting {@link IterablesChain} object uses a hash set to remove
+ * If this is called, the resulting {@link IterablesChain} object uses a hash set to remove
* duplicate elements.
*/
public Builder<T> deduplicate() {
diff --git a/src/main/java/com/google/devtools/build/lib/collect/nestedset/BUILD b/src/main/java/com/google/devtools/build/lib/collect/nestedset/BUILD
index dc51b15368..bd372ff043 100644
--- a/src/main/java/com/google/devtools/build/lib/collect/nestedset/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/collect/nestedset/BUILD
@@ -12,6 +12,7 @@ java_library(
srcs = [
"NestedSet.java",
"NestedSetBuilder.java",
+ "NestedSetCodec.java",
"NestedSetView.java",
"NestedSetVisitor.java",
"Order.java",
@@ -19,22 +20,9 @@ java_library(
deps = [
"//src/main/java/com/google/devtools/build/lib/collect/compacthashset",
"//src/main/java/com/google/devtools/build/lib/concurrent",
- "//third_party:guava",
- "//third_party:jsr305",
- ],
-)
-
-java_library(
- name = "serialization",
- srcs = [
- "NestedSetCodec.java",
- "NestedSetSerializer.java",
- ],
- deps = [
- ":nestedset",
"//src/main/java/com/google/devtools/build/lib/skyframe/serialization",
- "//src/main/java/com/google/devtools/build/lib/skyframe/serialization:kryo",
"//third_party:guava",
+ "//third_party:jsr305",
"//third_party/protobuf:protobuf_java",
],
)
diff --git a/src/main/java/com/google/devtools/build/lib/collect/nestedset/NestedSetSerializer.java b/src/main/java/com/google/devtools/build/lib/collect/nestedset/NestedSetSerializer.java
deleted file mode 100644
index 3bb2552915..0000000000
--- a/src/main/java/com/google/devtools/build/lib/collect/nestedset/NestedSetSerializer.java
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2018 The Bazel Authors. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.devtools.build.lib.collect.nestedset;
-
-import com.esotericsoftware.kryo.Kryo;
-import com.esotericsoftware.kryo.Serializer;
-import com.esotericsoftware.kryo.io.Input;
-import com.esotericsoftware.kryo.io.Output;
-
-/**
- * {@link Serializer} for {@link NestedSet}.
- *
- * <p>Needed to handle {@link NestedSet}'s sentinel values correctly.
- */
-public class NestedSetSerializer extends Serializer<NestedSet<Object>> {
-
- @Override
- public void write(Kryo kryo, Output output, NestedSet<Object> nestedSet) {
- kryo.writeObject(output, nestedSet.getOrder());
- Object children = nestedSet.rawChildren();
- if (children == NestedSet.EMPTY_CHILDREN) {
- output.writeBoolean(false);
- } else {
- output.writeBoolean(true);
- kryo.writeClassAndObject(output, children);
- }
- }
-
- @Override
- public NestedSet<Object> read(Kryo kryo, Input input, Class<NestedSet<Object>> unusedType) {
- Order order = kryo.readObject(input, Order.class);
- if (input.readBoolean()) {
- return new NestedSet<>(order, kryo.readClassAndObject(input));
- } else {
- return new NestedSet<>(order, NestedSet.EMPTY_CHILDREN);
- }
- }
-
- public static void registerSerializers(Kryo kryo) {
- kryo.register(NestedSet.class, new NestedSetSerializer());
- kryo.register(Order.class);
- kryo.register(Object[].class);
- }
-}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/BUILD b/src/main/java/com/google/devtools/build/lib/rules/cpp/BUILD
index 52f40ee300..b77aa2c62e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/BUILD
@@ -27,12 +27,10 @@ java_library(
"//src/main/java/com/google/devtools/build/lib/analysis/skylark/annotations",
"//src/main/java/com/google/devtools/build/lib/collect",
"//src/main/java/com/google/devtools/build/lib/collect/nestedset",
- "//src/main/java/com/google/devtools/build/lib/collect/nestedset:serialization",
"//src/main/java/com/google/devtools/build/lib/concurrent",
"//src/main/java/com/google/devtools/build/lib/profiler",
"//src/main/java/com/google/devtools/build/lib/rules/apple",
"//src/main/java/com/google/devtools/build/lib/shell",
- "//src/main/java/com/google/devtools/build/lib/skyframe/serialization",
"//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec",
"//src/main/java/com/google/devtools/build/lib/vfs",
"//src/main/java/com/google/devtools/build/skyframe",
diff --git a/src/main/java/com/google/devtools/build/lib/rules/genrule/BUILD b/src/main/java/com/google/devtools/build/lib/rules/genrule/BUILD
index fa823867b5..bfce8e108e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/genrule/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/rules/genrule/BUILD
@@ -19,7 +19,6 @@ java_library(
"//src/main/java/com/google/devtools/build/lib/actions",
"//src/main/java/com/google/devtools/build/lib/cmdline",
"//src/main/java/com/google/devtools/build/lib/collect/nestedset",
- "//src/main/java/com/google/devtools/build/lib/collect/nestedset:serialization",
"//src/main/java/com/google/devtools/build/lib/concurrent",
"//src/main/java/com/google/devtools/build/lib/rules/cpp",
"//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec",
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/BUILD b/src/main/java/com/google/devtools/build/lib/rules/objc/BUILD
index d6c8cf42ab..73dfd7c8f5 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/BUILD
@@ -25,14 +25,12 @@ java_library(
"//src/main/java/com/google/devtools/build/lib/analysis/platform",
"//src/main/java/com/google/devtools/build/lib/collect",
"//src/main/java/com/google/devtools/build/lib/collect/nestedset",
- "//src/main/java/com/google/devtools/build/lib/collect/nestedset:serialization",
"//src/main/java/com/google/devtools/build/lib/concurrent",
"//src/main/java/com/google/devtools/build/lib/profiler",
"//src/main/java/com/google/devtools/build/lib/rules/apple",
"//src/main/java/com/google/devtools/build/lib/rules/config",
"//src/main/java/com/google/devtools/build/lib/rules/cpp",
"//src/main/java/com/google/devtools/build/lib/shell",
- "//src/main/java/com/google/devtools/build/lib/skyframe/serialization",
"//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec",
"//src/main/java/com/google/devtools/build/lib/vfs",
"//src/main/java/com/google/devtools/common/options",
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/BUILD b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/BUILD
index d118b6183f..918e3f65bb 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/BUILD
@@ -15,7 +15,6 @@ java_library(
deps = [
":kryo",
"//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec:registered-singleton",
- "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects",
"//third_party:guava",
"//third_party:jsr305",
"//third_party/protobuf:protobuf_java",
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/JavaSerializableCodec.java b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/JavaSerializableCodec.java
index d0b6a7368f..859b400826 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/JavaSerializableCodec.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/JavaSerializableCodec.java
@@ -40,10 +40,12 @@ class JavaSerializableCodec implements ObjectCodec<Object> {
try {
objOut.writeObject(obj);
} catch (NotSerializableException e) {
- throw new SerializationException.NoCodecException("Object " + obj + " not serializable", e);
+ throw new SerializationException.NoCodecException(
+ "Object " + obj + " of type " + obj.getClass() + " not serializable", e);
} catch (NotSerializableRuntimeException e) {
// Values that inherit from Serializable but actually aren't serializable.
- throw new SerializationException.NoCodecException("Object " + obj + " not serializable", e);
+ throw new SerializationException.NoCodecException(
+ "Object " + obj + " of type " + obj.getClass() + " not serializable", e);
}
codedOut.writeBytesNoTag(out.toByteString());
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/BUILD b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/BUILD
index dfb7c0f261..3c0b5da183 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/BUILD
@@ -17,8 +17,6 @@ java_library(
":registered-singleton",
":unsafe-provider",
"//third_party/protobuf:protobuf_java",
- "//src/main/java/com/google/devtools/build/lib/collect/nestedset",
- "//src/main/java/com/google/devtools/build/lib/collect/nestedset:serialization",
"//src/main/java/com/google/devtools/build/lib/skyframe/serialization",
],
)
@@ -61,8 +59,6 @@ java_library(
":autocodec-annotation",
":registered-singleton",
":unsafe-provider",
- "//src/main/java/com/google/devtools/build/lib/collect/nestedset",
- "//src/main/java/com/google/devtools/build/lib/collect/nestedset:serialization",
"//src/main/java/com/google/devtools/build/lib/skyframe/serialization",
"//third_party:auto_service",
"//third_party:auto_value",
@@ -86,8 +82,6 @@ pkg_tar(
":libautocodec-processor.jar": "third_party/bazel_bootstrap/libautocodec-processor.jar",
":libregistered-singleton.jar": "third_party/bazel_bootstrap/libregistered-singleton.jar",
":libunsafe-provider.jar": "third_party/bazel_bootstrap/libunsafe-provider.jar",
- "//src/main/java/com/google/devtools/build/lib/collect/nestedset:libnestedset.jar": "third_party/bazel_bootstrap/libnestedset.jar",
- "//src/main/java/com/google/devtools/build/lib/collect/nestedset:libserialization.jar": "third_party/bazel_bootstrap/libnestedsetserialization.jar",
"//src/main/java/com/google/devtools/build/lib/skyframe/serialization:libserialization.jar": "third_party/bazel_bootstrap/libserialization.jar",
},
visibility = ["//visibility:public"],
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 1ab908cfab..692fb9904a 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
@@ -22,8 +22,6 @@ import com.google.common.collect.ImmutableSet;
import com.google.common.collect.ImmutableSortedSet;
import com.google.common.collect.Iterables;
import com.google.common.collect.Maps;
-import com.google.devtools.build.lib.collect.nestedset.NestedSet;
-import com.google.devtools.build.lib.collect.nestedset.NestedSetCodec;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.SerializationCodeGenerator.Context;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.SerializationCodeGenerator.Marshaller;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.SerializationCodeGenerator.PrimitiveValueSerializationCodeGenerator;
@@ -542,41 +540,6 @@ class Marshallers {
writeListDeserializationLoopAndBuild(context, repeated, builderName);
}
- private final Marshaller iterableMarshaller =
- new Marshaller() {
- @Override
- public boolean matches(DeclaredType type) {
- return matchesErased(type, Iterable.class);
- }
-
- @Override
- public void addSerializationCode(Context context) {
- // A runtime check on the type of the Iterable. If its a NestedSet, we need to use the
- // custom NestedSetCodec.
- // TODO(cpeyser): Remove this runtime check once AutoCodec Runtime is available. Runtime
- // checks in AutoCodec are very problematic because they will confuse the role of
- // AutoCodec Runtime.
- context.builder.beginControlFlow("if ($L instanceof $T)", context.name, NestedSet.class);
- context.builder.addStatement("codedOut.writeBoolNoTag(true)"); // nested set
- addSerializationCodeForNestedSet(context);
- context.builder.nextControlFlow("else");
- context.builder.addStatement("codedOut.writeBoolNoTag(false)"); // not nested set
- addSerializationCodeForIterable(context);
- context.builder.endControlFlow();
- }
-
- @Override
- public void addDeserializationCode(Context context) {
- String isNestedSetName = context.makeName("isNestedSet");
- context.builder.addStatement("boolean $L = codedIn.readBool()", isNestedSetName);
- context.builder.beginControlFlow("if ($L)", isNestedSetName);
- addDeserializationCodeForNestedSet(context);
- context.builder.nextControlFlow("else");
- addDeserializationCodeForIterable(context);
- context.builder.endControlFlow();
- }
- };
-
private final Marshaller listMarshaller =
new Marshaller() {
@Override
@@ -831,65 +794,6 @@ class Marshallers {
}
};
- private void addSerializationCodeForNestedSet(Context context) {
- TypeMirror typeParameter = context.getDeclaredType().getTypeArguments().get(0);
- if (typeParameter instanceof TypeVariable) {
- typeParameter = ((TypeVariable) typeParameter).getUpperBound();
- }
- String nestedSetCodec = context.makeName("nestedSetCodec");
- context.builder.addStatement(
- "$T<$T> $L = new $T<>()",
- NestedSetCodec.class,
- typeParameter,
- nestedSetCodec,
- NestedSetCodec.class);
- context.builder.addStatement(
- "$L.serialize(context, ($T<$T>) $L, codedOut)",
- nestedSetCodec,
- NestedSet.class,
- typeParameter,
- context.name);
- }
-
- private void addDeserializationCodeForNestedSet(Context context) {
- TypeMirror typeParameter = context.getDeclaredType().getTypeArguments().get(0);
- String nestedSetCodec = context.makeName("nestedSetCodec");
- if (typeParameter instanceof TypeVariable) {
- typeParameter = ((TypeVariable) typeParameter).getUpperBound();
- }
- context.builder.addStatement(
- "$T<$T> $L = new $T<>()",
- NestedSetCodec.class,
- typeParameter,
- nestedSetCodec,
- NestedSetCodec.class);
- context.builder.addStatement(
- "$L = $L.deserialize(context, codedIn)", context.name, nestedSetCodec);
- }
-
- private final Marshaller nestedSetMarshaller =
- new Marshaller() {
- @Override
- public boolean matches(DeclaredType type) {
- // env.getElementUtils().getTypeElement mysteriously does not recognize NestedSet, so we
- // do String comparison.
- return env.getTypeUtils()
- .erasure(type)
- .toString()
- .equals("com.google.devtools.build.lib.collect.nestedset.NestedSet");
- }
-
- @Override
- public void addSerializationCode(Context context) {
- addSerializationCodeForNestedSet(context);
- }
-
- @Override
- public void addDeserializationCode(Context context) {
- addDeserializationCodeForNestedSet(context);
- }
- };
-
/** Delegates marshalling back to the context. */
private final Marshaller contextMarshaller =
new Marshaller() {
@@ -955,10 +859,8 @@ class Marshallers {
immutableSortedSetMarshaller,
mapMarshaller,
multimapMarshaller,
- nestedSetMarshaller,
patternMarshaller,
protoMarshaller,
- iterableMarshaller,
charsetMarshaller,
contextMarshaller);
diff --git a/src/test/java/com/google/devtools/build/lib/BUILD b/src/test/java/com/google/devtools/build/lib/BUILD
index 438a480860..e487d55123 100644
--- a/src/test/java/com/google/devtools/build/lib/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/BUILD
@@ -222,7 +222,6 @@ java_test(
"//src/main/java/com/google/devtools/build/lib/actions:commandline_item",
"//src/main/java/com/google/devtools/build/lib/collect/nestedset",
"//src/main/java/com/google/devtools/build/lib/collect/nestedset:fingerprint_cache",
- "//src/main/java/com/google/devtools/build/lib/collect/nestedset:serialization",
"//src/main/java/com/google/devtools/build/lib/skyframe/serialization",
"//src/main/java/com/google/devtools/build/lib/skyframe/serialization/testutils",
],
@@ -778,7 +777,6 @@ java_test(
"//src/main/java/com/google/devtools/build/lib/collect",
"//src/main/java/com/google/devtools/build/lib/collect/nestedset",
"//src/main/java/com/google/devtools/build/lib/rules/cpp",
- "//src/main/java/com/google/devtools/build/lib/skyframe/serialization",
"//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec",
"//src/main/java/com/google/devtools/build/lib/skyframe/serialization/testutils",
"//src/main/java/com/google/devtools/build/lib/vfs",
diff --git a/src/test/java/com/google/devtools/build/lib/collect/nestedset/NestedSetCodecTest.java b/src/test/java/com/google/devtools/build/lib/collect/nestedset/NestedSetCodecTest.java
index 57f0a4ac1c..da9702abca 100644
--- a/src/test/java/com/google/devtools/build/lib/collect/nestedset/NestedSetCodecTest.java
+++ b/src/test/java/com/google/devtools/build/lib/collect/nestedset/NestedSetCodecTest.java
@@ -15,9 +15,7 @@ package com.google.devtools.build.lib.collect.nestedset;
import static com.google.common.truth.Truth.assertThat;
-import com.google.common.collect.ImmutableList;
-import com.google.devtools.build.lib.skyframe.serialization.testutils.ObjectCodecTester;
-import com.google.devtools.build.lib.skyframe.serialization.testutils.SerializerTester;
+import com.google.devtools.build.lib.skyframe.serialization.testutils.SerializationTester;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -29,47 +27,30 @@ public class NestedSetCodecTest {
private static final NestedSet<String> SHARED_NESTED_SET =
NestedSetBuilder.<String>stableOrder().add("e").build();
- private static final ImmutableList<NestedSet<String>> SUBJECTS =
- ImmutableList.of(
- NestedSetBuilder.emptySet(Order.STABLE_ORDER),
- NestedSetBuilder.emptySet(Order.NAIVE_LINK_ORDER),
- NestedSetBuilder.create(Order.STABLE_ORDER, "a"),
- NestedSetBuilder.create(Order.STABLE_ORDER, "a", "b", "c"),
- NestedSetBuilder.<String>stableOrder()
- .add("a")
- .add("b")
- .addTransitive(
- NestedSetBuilder.<String>stableOrder()
- .add("c")
- .addTransitive(SHARED_NESTED_SET)
- .build())
- .addTransitive(
- NestedSetBuilder.<String>stableOrder()
- .add("d")
- .addTransitive(SHARED_NESTED_SET)
- .build())
- .addTransitive(NestedSetBuilder.emptySet(Order.STABLE_ORDER))
- .build());
-
@Test
public void testCodec() throws Exception {
- ObjectCodecTester.newBuilder(new NestedSetCodec<String>())
- .addSubjects(SUBJECTS)
- .verificationFunction(NestedSetCodecTest::verifyDeserialization)
- .buildAndRunTests();
- }
-
- @SuppressWarnings({"rawtypes", "unchecked"})
- @Test
- public void testSerializer() throws Exception {
- SerializerTester.Builder<NestedSet, NestedSet> builder =
- SerializerTester.newBuilder(NestedSet.class)
- .visitKryo(NestedSetSerializer::registerSerializers)
- .setVerificationFunction(NestedSetCodecTest::verifyDeserialization);
- for (NestedSet<String> subject : SUBJECTS) {
- builder.addSubjects(subject);
- }
- builder.buildAndRunTests();
+ new SerializationTester(
+ NestedSetBuilder.emptySet(Order.STABLE_ORDER),
+ NestedSetBuilder.emptySet(Order.NAIVE_LINK_ORDER),
+ NestedSetBuilder.create(Order.STABLE_ORDER, "a"),
+ NestedSetBuilder.create(Order.STABLE_ORDER, "a", "b", "c"),
+ NestedSetBuilder.<String>stableOrder()
+ .add("a")
+ .add("b")
+ .addTransitive(
+ NestedSetBuilder.<String>stableOrder()
+ .add("c")
+ .addTransitive(SHARED_NESTED_SET)
+ .build())
+ .addTransitive(
+ NestedSetBuilder.<String>stableOrder()
+ .add("d")
+ .addTransitive(SHARED_NESTED_SET)
+ .build())
+ .addTransitive(NestedSetBuilder.emptySet(Order.STABLE_ORDER))
+ .build())
+ .setVerificationFunction(NestedSetCodecTest::verifyDeserialization)
+ .runTests();
}
private static void verifyDeserialization(