aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/syntax
diff options
context:
space:
mode:
authorGravatar mjhalupka <mjhalupka@google.com>2018-06-29 12:35:11 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-06-29 12:38:10 -0700
commit374ad9e5c12947eb852396143b4f6aef35a33338 (patch)
treed843a9d73ed5a99a740b472248566e7a77a733bf /src/main/java/com/google/devtools/build/lib/syntax
parent636f5c08283d6d9dc3b7115d14a37542b05c3afb (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.java10
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;