Avoid copying the entire package contents in order to construct the line number table.
--
MOS_MIGRATED_REVID=96010987
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 653abee..7867455 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
@@ -23,6 +23,7 @@
import com.google.devtools.build.lib.vfs.PathFragment;
import java.io.Serializable;
+import java.nio.CharBuffer;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
@@ -185,8 +186,7 @@
private final int bufferLength;
private HashLine(char[] buffer, PathFragment defaultPath) {
- // Not especially efficient, but that's fine: we just exec'd Python.
- String bufString = new String(buffer);
+ CharSequence bufString = CharBuffer.wrap(buffer);
Matcher m = pattern.matcher(bufString);
List<SingleHashLine> unorderedTable = new ArrayList<>();
while (m.find()) {