aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/serialization/DeserializationContext.java
diff options
context:
space:
mode:
authorGravatar janakr <janakr@google.com>2018-02-26 12:52:13 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-02-26 12:54:12 -0800
commit0b59342ad5e4935368c790799dfc9c7b192b6225 (patch)
treed48bb8696e508a91f71e0c25777d52cf38032f25 /src/main/java/com/google/devtools/build/lib/skyframe/serialization/DeserializationContext.java
parente5118c5da8255662caefd4a5e1cb5c37d9a19466 (diff)
Allow @AutoCodec to tag static final fields, and generate a "pointer" class that has a single static INSTANCE field pointing back to the target field, so that serialization can grab it.
PiperOrigin-RevId: 187065629
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/serialization/DeserializationContext.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/serialization/DeserializationContext.java5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/DeserializationContext.java b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/DeserializationContext.java
index 5377d4ffc6..e867969cdf 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/DeserializationContext.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/DeserializationContext.java
@@ -43,7 +43,10 @@ public class DeserializationContext {
if (tag == 0) {
return null;
}
- return (T) registry.getCodecDescriptorByTag(tag).deserialize(this, codedIn);
+ T constant = (T) registry.maybeGetConstantByTag(tag);
+ return constant == null
+ ? (T) registry.getCodecDescriptorByTag(tag).deserialize(this, codedIn)
+ : constant;
}
@SuppressWarnings("unchecked")