diff options
author | 2018-02-26 12:52:13 -0800 | |
---|---|---|
committer | 2018-02-26 12:54:12 -0800 | |
commit | 0b59342ad5e4935368c790799dfc9c7b192b6225 (patch) | |
tree | d48bb8696e508a91f71e0c25777d52cf38032f25 /src/main/java/com/google/devtools/build/lib/skyframe/serialization/DeserializationContext.java | |
parent | e5118c5da8255662caefd4a5e1cb5c37d9a19466 (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.java | 5 |
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") |