diff options
author | mjhalupka <mjhalupka@google.com> | 2018-06-29 12:35:11 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-06-29 12:38:10 -0700 |
commit | 374ad9e5c12947eb852396143b4f6aef35a33338 (patch) | |
tree | d843a9d73ed5a99a740b472248566e7a77a733bf /src/main/java/com/google/devtools/build/lib/syntax | |
parent | 636f5c08283d6d9dc3b7115d14a37542b05c3afb (diff) |
Add an interner to LineNumberTable for during deserialization.
PiperOrigin-RevId: 202690640
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/syntax')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/syntax/LineNumberTable.java | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/LineNumberTable.java b/src/main/java/com/google/devtools/build/lib/syntax/LineNumberTable.java index 276b5df2ca..e212a21f6e 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/LineNumberTable.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/LineNumberTable.java @@ -14,6 +14,8 @@ package com.google.devtools.build.lib.syntax; +import com.google.common.collect.Interner; +import com.google.devtools.build.lib.concurrent.BlazeInterners; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.events.Location.LineAndColumn; import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; @@ -31,6 +33,9 @@ import java.util.Objects; @AutoCodec @Immutable public class LineNumberTable implements Serializable { + private static final Interner<LineNumberTable> LINE_NUMBER_TABLE_INTERNER = + BlazeInterners.newWeakInterner(); + /** A mapping from line number (line >= 1) to character offset into the file. */ private final int[] linestart; @@ -42,6 +47,11 @@ public class LineNumberTable implements Serializable { } @AutoCodec.Instantiator + static LineNumberTable createForSerialization( + int[] linestart, PathFragment path, int bufferLength) { + return LINE_NUMBER_TABLE_INTERNER.intern(new LineNumberTable(linestart, path, bufferLength)); + } + LineNumberTable(int[] linestart, PathFragment path, int bufferLength) { this.linestart = linestart; this.path = path; |