aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe
diff options
context:
space:
mode:
authorGravatar janakr <janakr@google.com>2018-02-02 12:38:58 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-02-02 12:41:12 -0800
commit64d9a4d6dcd720a3b7a60ff550a17a7707dd41d0 (patch)
tree204d7e5cbde5268ae94f297fddfd148a848b00c2 /src/main/java/com/google/devtools/build/lib/skyframe
parenta93e4223dedd920a20b9de69bb5274b072de97cd (diff)
Start process of tagging AspectKey. Still a lot of subclasses of AspectClass to do.
Also change AspectDescriptor #isEmpty() semantics because they seemed like a bug to me. PiperOrigin-RevId: 184319840
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/AspectValue.java42
1 files changed, 41 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/AspectValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/AspectValue.java
index e3b651f2af..0aca54b402 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/AspectValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/AspectValue.java
@@ -35,8 +35,14 @@ import com.google.devtools.build.lib.packages.AspectParameters;
import com.google.devtools.build.lib.packages.Package;
import com.google.devtools.build.lib.skyframe.BuildConfigurationValue.Key;
import com.google.devtools.build.lib.skyframe.ConfiguredTargetKey.KeyAndHost;
+import com.google.devtools.build.lib.skyframe.serialization.ImmutableListCodec;
+import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
+import com.google.devtools.build.lib.skyframe.serialization.SerializationException;
import com.google.devtools.build.lib.syntax.SkylarkImport;
import com.google.devtools.build.skyframe.SkyFunctionName;
+import com.google.protobuf.CodedInputStream;
+import com.google.protobuf.CodedOutputStream;
+import java.io.IOException;
import java.util.List;
import javax.annotation.Nullable;
@@ -54,6 +60,7 @@ public final class AspectValue extends ActionLookupValue {
/** A base class for a key representing an aspect applied to a particular target. */
public static class AspectKey extends AspectValueKey {
+ public static final ObjectCodec<AspectKey> CODEC = new AspectKeyCodec();
private final Label label;
private final ImmutableList<AspectKey> baseKeys;
private final BuildConfigurationValue.Key aspectConfigurationKey;
@@ -243,7 +250,8 @@ public final class AspectValue extends ActionLookupValue {
}
/** An {@link AspectKey} for an aspect in the host configuration. */
- private static class HostAspectKey extends AspectKey {
+ static class HostAspectKey extends AspectKey {
+ static final ObjectCodec<AspectKey> CODEC = AspectKey.CODEC;
private HostAspectKey(
Label label,
@@ -260,6 +268,38 @@ public final class AspectValue extends ActionLookupValue {
}
}
+ private static class AspectKeyCodec implements ObjectCodec<AspectKey> {
+ private final ImmutableListCodec<AspectKey> listCodec = new ImmutableListCodec<>(this);
+
+ @Override
+ public Class<AspectKey> getEncodedClass() {
+ return AspectKey.class;
+ }
+
+ @Override
+ public void serialize(AspectKey obj, CodedOutputStream codedOut)
+ throws SerializationException, IOException {
+ Label.CODEC.serialize(obj.label, codedOut);
+ ConfiguredTargetKey.CODEC.serialize(obj.baseConfiguredTargetKey, codedOut);
+ listCodec.serialize(obj.baseKeys, codedOut);
+ AspectDescriptor.CODEC.serialize(obj.aspectDescriptor, codedOut);
+ Key.CODEC.serialize(obj.aspectConfigurationKey, codedOut);
+ codedOut.writeBoolNoTag(obj.aspectConfigurationIsHost());
+ }
+
+ @Override
+ public AspectKey deserialize(CodedInputStream codedIn)
+ throws SerializationException, IOException {
+ return createAspectKey(
+ Label.CODEC.deserialize(codedIn),
+ ConfiguredTargetKey.CODEC.deserialize(codedIn),
+ listCodec.deserialize(codedIn),
+ AspectDescriptor.CODEC.deserialize(codedIn),
+ Key.CODEC.deserialize(codedIn),
+ codedIn.readBool());
+ }
+ }
+
/**
* The key for a skylark aspect.
*/