diff --git a/src/vs/editor/common/model/linesTextBuffer/linesTextBufferBuilder.ts b/src/vs/editor/common/model/linesTextBuffer/linesTextBufferBuilder.ts index d7300b983ff07..3c46fd8d3e1ca 100644 --- a/src/vs/editor/common/model/linesTextBuffer/linesTextBufferBuilder.ts +++ b/src/vs/editor/common/model/linesTextBuffer/linesTextBufferBuilder.ts @@ -25,48 +25,8 @@ export class TextBufferFactory implements ITextBufferFactory { } } -const AVOID_SLICED_STRINGS = true; -const PREALLOC_BUFFER_CHARS = 1000; - -const emptyString = ''; -const asciiStrings: string[] = []; -for (let i = 0; i < 128; i++) { - asciiStrings[i] = String.fromCharCode(i); -} - -function optimizeStringMemory(buff: Buffer, s: string): string { - const len = s.length; - - if (len === 0) { - return emptyString; - } - - if (len === 1) { - const charCode = s.charCodeAt(0); - if (charCode < 128) { - return asciiStrings[charCode]; - } - } - - if (AVOID_SLICED_STRINGS) { - // See https://bugs.chromium.org/p/v8/issues/detail?id=2869 - // See https://github.com/nodejs/help/issues/711 - - if (len < PREALLOC_BUFFER_CHARS) { - // Use the same buffer instance that we have allocated and that can fit `PREALLOC_BUFFER_CHARS` characters - const byteLen = buff.write(s, 0); - return buff.toString(undefined, 0, byteLen); - } - - return Buffer.from(s).toString(); - } - - return s; -} - class ModelLineBasedBuilder { - private buff: Buffer; private BOM: string; private lines: string[]; private currLineIndex: number; @@ -75,7 +35,6 @@ class ModelLineBasedBuilder { this.BOM = ''; this.lines = []; this.currLineIndex = 0; - this.buff = Buffer.alloc(3/*any UTF16 code unit could expand to up to 3 UTF8 code units*/ * PREALLOC_BUFFER_CHARS); } public acceptLines(lines: string[]): void { @@ -88,7 +47,7 @@ class ModelLineBasedBuilder { } for (let i = 0, len = lines.length; i < len; i++) { - this.lines[this.currLineIndex++] = optimizeStringMemory(this.buff, lines[i]); + this.lines[this.currLineIndex++] = lines[i]; } }