diff --git a/apps/oxlint/src-js/generated/deserialize.js b/apps/oxlint/src-js/generated/deserialize.js index 2cdbdb74e417b..f91d5adaf11a1 100644 --- a/apps/oxlint/src-js/generated/deserialize.js +++ b/apps/oxlint/src-js/generated/deserialize.js @@ -16,7 +16,7 @@ let uint8, const textDecoder = new TextDecoder("utf-8", { ignoreBOM: true }), decodeStr = textDecoder.decode.bind(textDecoder), - { fromCodePoint } = String, + { fromCodePoint, fromCharCode } = String, NodeProto = Object.create(Object.prototype, { loc: { get() { @@ -5868,22 +5868,1330 @@ function deserializeStr(pos) { pos = uint32[pos32]; if (pos >= sourceStartPos && (sourceIsAscii || pos - sourceStartPos + len <= firstNonAsciiPos)) return sourceText.substr(pos - sourceStartPos, len); - // Use `TextDecoder` for strings longer than 9 bytes. - // For shorter strings, the byte-by-byte loop below avoids native call overhead. + // Use `TextDecoder` for strings longer than 48 bytes. + // For shorter strings, a single `fromCharCode` call with all byte values is faster + // than both TextDecoder (native call overhead) and the byte-by-byte concat loop. + // V8 optimizes a direct `fromCharCode` call with known argument count much better + // than repeated string concatenation. let end = pos + len; - if (len > 9) return decodeStr(uint8.subarray(pos, end)); - // Shorter strings decode by hand to avoid native call - let out = "", - c; - do { - c = uint8[pos++]; - if (c < 128) out += fromCodePoint(c); - else { - out += decodeStr(uint8.subarray(pos - 1, end)); + if (len > 48) return decodeStr(uint8.subarray(pos, end)); + // Check if all bytes are ASCII + let allAscii = true; + for (let i = pos; i < end; i++) + if (uint8[i] >= 128) { + allAscii = false; break; } - } while (pos < end); - return out; + if (allAscii) + switch (len) { + case 1: + return fromCharCode(uint8[pos]); + case 2: + return fromCharCode(uint8[pos], uint8[pos + 1]); + case 3: + return fromCharCode(uint8[pos], uint8[pos + 1], uint8[pos + 2]); + case 4: + return fromCharCode(uint8[pos], uint8[pos + 1], uint8[pos + 2], uint8[pos + 3]); + case 5: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + ); + case 6: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + ); + case 7: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + ); + case 8: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + ); + case 9: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + ); + case 10: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + ); + case 11: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + ); + case 12: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + ); + case 13: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + ); + case 14: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + ); + case 15: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + ); + case 16: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + ); + case 17: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + ); + case 18: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + ); + case 19: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + ); + case 20: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + ); + case 21: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + ); + case 22: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + ); + case 23: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + ); + case 24: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + ); + case 25: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + ); + case 26: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + ); + case 27: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + ); + case 28: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + ); + case 29: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + ); + case 30: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + ); + case 31: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + ); + case 32: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + ); + case 33: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + ); + case 34: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + ); + case 35: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + ); + case 36: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + ); + case 37: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + ); + case 38: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + ); + case 39: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + ); + case 40: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + ); + case 41: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + ); + case 42: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + ); + case 43: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + ); + case 44: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + ); + case 45: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + uint8[pos + 44], + ); + case 46: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + uint8[pos + 44], + uint8[pos + 45], + ); + case 47: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + uint8[pos + 44], + uint8[pos + 45], + uint8[pos + 46], + ); + case 48: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + uint8[pos + 44], + uint8[pos + 45], + uint8[pos + 46], + uint8[pos + 47], + ); + } + return decodeStr(uint8.subarray(pos, end)); } function deserializeVecDirective(pos) { diff --git a/napi/parser/src-js/generated/deserialize/js.js b/napi/parser/src-js/generated/deserialize/js.js index 4a68737c8baef..d36e43de965c7 100644 --- a/napi/parser/src-js/generated/deserialize/js.js +++ b/napi/parser/src-js/generated/deserialize/js.js @@ -5,7 +5,7 @@ let uint8, uint32, float64, sourceText, sourceIsAscii, sourceEndPos, firstNonAsc const textDecoder = new TextDecoder("utf-8", { ignoreBOM: true }), decodeStr = textDecoder.decode.bind(textDecoder), - { fromCodePoint } = String; + { fromCodePoint, fromCharCode } = String; export function deserialize(buffer, sourceText, sourceByteLen) { sourceEndPos = sourceByteLen; @@ -4523,22 +4523,1330 @@ function deserializeStr(pos) { pos = uint32[pos32]; if (pos < sourceEndPos && (sourceIsAscii || pos + len <= firstNonAsciiPos)) return sourceText.substr(pos, len); - // Use `TextDecoder` for strings longer than 9 bytes. - // For shorter strings, the byte-by-byte loop below avoids native call overhead. + // Use `TextDecoder` for strings longer than 48 bytes. + // For shorter strings, a single `fromCharCode` call with all byte values is faster + // than both TextDecoder (native call overhead) and the byte-by-byte concat loop. + // V8 optimizes a direct `fromCharCode` call with known argument count much better + // than repeated string concatenation. let end = pos + len; - if (len > 9) return decodeStr(uint8.subarray(pos, end)); - // Shorter strings decode by hand to avoid native call - let out = "", - c; - do { - c = uint8[pos++]; - if (c < 128) out += fromCodePoint(c); - else { - out += decodeStr(uint8.subarray(pos - 1, end)); + if (len > 48) return decodeStr(uint8.subarray(pos, end)); + // Check if all bytes are ASCII + let allAscii = true; + for (let i = pos; i < end; i++) + if (uint8[i] >= 128) { + allAscii = false; break; } - } while (pos < end); - return out; + if (allAscii) + switch (len) { + case 1: + return fromCharCode(uint8[pos]); + case 2: + return fromCharCode(uint8[pos], uint8[pos + 1]); + case 3: + return fromCharCode(uint8[pos], uint8[pos + 1], uint8[pos + 2]); + case 4: + return fromCharCode(uint8[pos], uint8[pos + 1], uint8[pos + 2], uint8[pos + 3]); + case 5: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + ); + case 6: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + ); + case 7: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + ); + case 8: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + ); + case 9: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + ); + case 10: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + ); + case 11: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + ); + case 12: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + ); + case 13: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + ); + case 14: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + ); + case 15: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + ); + case 16: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + ); + case 17: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + ); + case 18: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + ); + case 19: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + ); + case 20: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + ); + case 21: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + ); + case 22: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + ); + case 23: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + ); + case 24: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + ); + case 25: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + ); + case 26: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + ); + case 27: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + ); + case 28: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + ); + case 29: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + ); + case 30: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + ); + case 31: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + ); + case 32: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + ); + case 33: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + ); + case 34: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + ); + case 35: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + ); + case 36: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + ); + case 37: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + ); + case 38: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + ); + case 39: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + ); + case 40: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + ); + case 41: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + ); + case 42: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + ); + case 43: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + ); + case 44: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + ); + case 45: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + uint8[pos + 44], + ); + case 46: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + uint8[pos + 44], + uint8[pos + 45], + ); + case 47: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + uint8[pos + 44], + uint8[pos + 45], + uint8[pos + 46], + ); + case 48: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + uint8[pos + 44], + uint8[pos + 45], + uint8[pos + 46], + uint8[pos + 47], + ); + } + return decodeStr(uint8.subarray(pos, end)); } function deserializeVecComment(pos) { diff --git a/napi/parser/src-js/generated/deserialize/js_parent.js b/napi/parser/src-js/generated/deserialize/js_parent.js index 6ef044bdf1d5f..4817a40ca8ec0 100644 --- a/napi/parser/src-js/generated/deserialize/js_parent.js +++ b/napi/parser/src-js/generated/deserialize/js_parent.js @@ -12,7 +12,7 @@ let uint8, const textDecoder = new TextDecoder("utf-8", { ignoreBOM: true }), decodeStr = textDecoder.decode.bind(textDecoder), - { fromCodePoint } = String; + { fromCodePoint, fromCharCode } = String; export function deserialize(buffer, sourceText, sourceByteLen) { sourceEndPos = sourceByteLen; @@ -5060,22 +5060,1330 @@ function deserializeStr(pos) { pos = uint32[pos32]; if (pos < sourceEndPos && (sourceIsAscii || pos + len <= firstNonAsciiPos)) return sourceText.substr(pos, len); - // Use `TextDecoder` for strings longer than 9 bytes. - // For shorter strings, the byte-by-byte loop below avoids native call overhead. + // Use `TextDecoder` for strings longer than 48 bytes. + // For shorter strings, a single `fromCharCode` call with all byte values is faster + // than both TextDecoder (native call overhead) and the byte-by-byte concat loop. + // V8 optimizes a direct `fromCharCode` call with known argument count much better + // than repeated string concatenation. let end = pos + len; - if (len > 9) return decodeStr(uint8.subarray(pos, end)); - // Shorter strings decode by hand to avoid native call - let out = "", - c; - do { - c = uint8[pos++]; - if (c < 128) out += fromCodePoint(c); - else { - out += decodeStr(uint8.subarray(pos - 1, end)); + if (len > 48) return decodeStr(uint8.subarray(pos, end)); + // Check if all bytes are ASCII + let allAscii = true; + for (let i = pos; i < end; i++) + if (uint8[i] >= 128) { + allAscii = false; break; } - } while (pos < end); - return out; + if (allAscii) + switch (len) { + case 1: + return fromCharCode(uint8[pos]); + case 2: + return fromCharCode(uint8[pos], uint8[pos + 1]); + case 3: + return fromCharCode(uint8[pos], uint8[pos + 1], uint8[pos + 2]); + case 4: + return fromCharCode(uint8[pos], uint8[pos + 1], uint8[pos + 2], uint8[pos + 3]); + case 5: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + ); + case 6: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + ); + case 7: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + ); + case 8: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + ); + case 9: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + ); + case 10: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + ); + case 11: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + ); + case 12: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + ); + case 13: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + ); + case 14: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + ); + case 15: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + ); + case 16: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + ); + case 17: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + ); + case 18: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + ); + case 19: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + ); + case 20: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + ); + case 21: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + ); + case 22: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + ); + case 23: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + ); + case 24: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + ); + case 25: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + ); + case 26: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + ); + case 27: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + ); + case 28: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + ); + case 29: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + ); + case 30: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + ); + case 31: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + ); + case 32: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + ); + case 33: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + ); + case 34: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + ); + case 35: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + ); + case 36: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + ); + case 37: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + ); + case 38: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + ); + case 39: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + ); + case 40: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + ); + case 41: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + ); + case 42: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + ); + case 43: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + ); + case 44: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + ); + case 45: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + uint8[pos + 44], + ); + case 46: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + uint8[pos + 44], + uint8[pos + 45], + ); + case 47: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + uint8[pos + 44], + uint8[pos + 45], + uint8[pos + 46], + ); + case 48: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + uint8[pos + 44], + uint8[pos + 45], + uint8[pos + 46], + uint8[pos + 47], + ); + } + return decodeStr(uint8.subarray(pos, end)); } function deserializeVecComment(pos) { diff --git a/napi/parser/src-js/generated/deserialize/js_range.js b/napi/parser/src-js/generated/deserialize/js_range.js index 775d908455ae5..a594b0ebc171f 100644 --- a/napi/parser/src-js/generated/deserialize/js_range.js +++ b/napi/parser/src-js/generated/deserialize/js_range.js @@ -5,7 +5,7 @@ let uint8, uint32, float64, sourceText, sourceIsAscii, sourceEndPos, firstNonAsc const textDecoder = new TextDecoder("utf-8", { ignoreBOM: true }), decodeStr = textDecoder.decode.bind(textDecoder), - { fromCodePoint } = String; + { fromCodePoint, fromCharCode } = String; export function deserialize(buffer, sourceText, sourceByteLen) { sourceEndPos = sourceByteLen; @@ -5073,22 +5073,1330 @@ function deserializeStr(pos) { pos = uint32[pos32]; if (pos < sourceEndPos && (sourceIsAscii || pos + len <= firstNonAsciiPos)) return sourceText.substr(pos, len); - // Use `TextDecoder` for strings longer than 9 bytes. - // For shorter strings, the byte-by-byte loop below avoids native call overhead. + // Use `TextDecoder` for strings longer than 48 bytes. + // For shorter strings, a single `fromCharCode` call with all byte values is faster + // than both TextDecoder (native call overhead) and the byte-by-byte concat loop. + // V8 optimizes a direct `fromCharCode` call with known argument count much better + // than repeated string concatenation. let end = pos + len; - if (len > 9) return decodeStr(uint8.subarray(pos, end)); - // Shorter strings decode by hand to avoid native call - let out = "", - c; - do { - c = uint8[pos++]; - if (c < 128) out += fromCodePoint(c); - else { - out += decodeStr(uint8.subarray(pos - 1, end)); + if (len > 48) return decodeStr(uint8.subarray(pos, end)); + // Check if all bytes are ASCII + let allAscii = true; + for (let i = pos; i < end; i++) + if (uint8[i] >= 128) { + allAscii = false; break; } - } while (pos < end); - return out; + if (allAscii) + switch (len) { + case 1: + return fromCharCode(uint8[pos]); + case 2: + return fromCharCode(uint8[pos], uint8[pos + 1]); + case 3: + return fromCharCode(uint8[pos], uint8[pos + 1], uint8[pos + 2]); + case 4: + return fromCharCode(uint8[pos], uint8[pos + 1], uint8[pos + 2], uint8[pos + 3]); + case 5: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + ); + case 6: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + ); + case 7: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + ); + case 8: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + ); + case 9: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + ); + case 10: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + ); + case 11: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + ); + case 12: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + ); + case 13: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + ); + case 14: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + ); + case 15: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + ); + case 16: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + ); + case 17: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + ); + case 18: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + ); + case 19: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + ); + case 20: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + ); + case 21: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + ); + case 22: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + ); + case 23: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + ); + case 24: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + ); + case 25: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + ); + case 26: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + ); + case 27: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + ); + case 28: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + ); + case 29: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + ); + case 30: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + ); + case 31: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + ); + case 32: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + ); + case 33: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + ); + case 34: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + ); + case 35: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + ); + case 36: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + ); + case 37: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + ); + case 38: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + ); + case 39: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + ); + case 40: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + ); + case 41: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + ); + case 42: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + ); + case 43: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + ); + case 44: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + ); + case 45: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + uint8[pos + 44], + ); + case 46: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + uint8[pos + 44], + uint8[pos + 45], + ); + case 47: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + uint8[pos + 44], + uint8[pos + 45], + uint8[pos + 46], + ); + case 48: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + uint8[pos + 44], + uint8[pos + 45], + uint8[pos + 46], + uint8[pos + 47], + ); + } + return decodeStr(uint8.subarray(pos, end)); } function deserializeVecComment(pos) { diff --git a/napi/parser/src-js/generated/deserialize/js_range_parent.js b/napi/parser/src-js/generated/deserialize/js_range_parent.js index 40bae9adeb148..36c8e22f297a6 100644 --- a/napi/parser/src-js/generated/deserialize/js_range_parent.js +++ b/napi/parser/src-js/generated/deserialize/js_range_parent.js @@ -12,7 +12,7 @@ let uint8, const textDecoder = new TextDecoder("utf-8", { ignoreBOM: true }), decodeStr = textDecoder.decode.bind(textDecoder), - { fromCodePoint } = String; + { fromCodePoint, fromCharCode } = String; export function deserialize(buffer, sourceText, sourceByteLen) { sourceEndPos = sourceByteLen; @@ -5613,22 +5613,1330 @@ function deserializeStr(pos) { pos = uint32[pos32]; if (pos < sourceEndPos && (sourceIsAscii || pos + len <= firstNonAsciiPos)) return sourceText.substr(pos, len); - // Use `TextDecoder` for strings longer than 9 bytes. - // For shorter strings, the byte-by-byte loop below avoids native call overhead. + // Use `TextDecoder` for strings longer than 48 bytes. + // For shorter strings, a single `fromCharCode` call with all byte values is faster + // than both TextDecoder (native call overhead) and the byte-by-byte concat loop. + // V8 optimizes a direct `fromCharCode` call with known argument count much better + // than repeated string concatenation. let end = pos + len; - if (len > 9) return decodeStr(uint8.subarray(pos, end)); - // Shorter strings decode by hand to avoid native call - let out = "", - c; - do { - c = uint8[pos++]; - if (c < 128) out += fromCodePoint(c); - else { - out += decodeStr(uint8.subarray(pos - 1, end)); + if (len > 48) return decodeStr(uint8.subarray(pos, end)); + // Check if all bytes are ASCII + let allAscii = true; + for (let i = pos; i < end; i++) + if (uint8[i] >= 128) { + allAscii = false; break; } - } while (pos < end); - return out; + if (allAscii) + switch (len) { + case 1: + return fromCharCode(uint8[pos]); + case 2: + return fromCharCode(uint8[pos], uint8[pos + 1]); + case 3: + return fromCharCode(uint8[pos], uint8[pos + 1], uint8[pos + 2]); + case 4: + return fromCharCode(uint8[pos], uint8[pos + 1], uint8[pos + 2], uint8[pos + 3]); + case 5: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + ); + case 6: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + ); + case 7: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + ); + case 8: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + ); + case 9: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + ); + case 10: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + ); + case 11: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + ); + case 12: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + ); + case 13: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + ); + case 14: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + ); + case 15: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + ); + case 16: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + ); + case 17: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + ); + case 18: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + ); + case 19: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + ); + case 20: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + ); + case 21: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + ); + case 22: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + ); + case 23: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + ); + case 24: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + ); + case 25: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + ); + case 26: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + ); + case 27: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + ); + case 28: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + ); + case 29: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + ); + case 30: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + ); + case 31: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + ); + case 32: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + ); + case 33: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + ); + case 34: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + ); + case 35: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + ); + case 36: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + ); + case 37: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + ); + case 38: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + ); + case 39: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + ); + case 40: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + ); + case 41: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + ); + case 42: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + ); + case 43: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + ); + case 44: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + ); + case 45: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + uint8[pos + 44], + ); + case 46: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + uint8[pos + 44], + uint8[pos + 45], + ); + case 47: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + uint8[pos + 44], + uint8[pos + 45], + uint8[pos + 46], + ); + case 48: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + uint8[pos + 44], + uint8[pos + 45], + uint8[pos + 46], + uint8[pos + 47], + ); + } + return decodeStr(uint8.subarray(pos, end)); } function deserializeVecComment(pos) { diff --git a/napi/parser/src-js/generated/deserialize/ts.js b/napi/parser/src-js/generated/deserialize/ts.js index f763b19b58931..5d5a3a8b708c7 100644 --- a/napi/parser/src-js/generated/deserialize/ts.js +++ b/napi/parser/src-js/generated/deserialize/ts.js @@ -5,7 +5,7 @@ let uint8, uint32, float64, sourceText, sourceIsAscii, sourceEndPos, firstNonAsc const textDecoder = new TextDecoder("utf-8", { ignoreBOM: true }), decodeStr = textDecoder.decode.bind(textDecoder), - { fromCodePoint } = String; + { fromCodePoint, fromCharCode } = String; export function deserialize(buffer, sourceText, sourceByteLen) { sourceEndPos = sourceByteLen; @@ -4832,22 +4832,1330 @@ function deserializeStr(pos) { pos = uint32[pos32]; if (pos < sourceEndPos && (sourceIsAscii || pos + len <= firstNonAsciiPos)) return sourceText.substr(pos, len); - // Use `TextDecoder` for strings longer than 9 bytes. - // For shorter strings, the byte-by-byte loop below avoids native call overhead. + // Use `TextDecoder` for strings longer than 48 bytes. + // For shorter strings, a single `fromCharCode` call with all byte values is faster + // than both TextDecoder (native call overhead) and the byte-by-byte concat loop. + // V8 optimizes a direct `fromCharCode` call with known argument count much better + // than repeated string concatenation. let end = pos + len; - if (len > 9) return decodeStr(uint8.subarray(pos, end)); - // Shorter strings decode by hand to avoid native call - let out = "", - c; - do { - c = uint8[pos++]; - if (c < 128) out += fromCodePoint(c); - else { - out += decodeStr(uint8.subarray(pos - 1, end)); + if (len > 48) return decodeStr(uint8.subarray(pos, end)); + // Check if all bytes are ASCII + let allAscii = true; + for (let i = pos; i < end; i++) + if (uint8[i] >= 128) { + allAscii = false; break; } - } while (pos < end); - return out; + if (allAscii) + switch (len) { + case 1: + return fromCharCode(uint8[pos]); + case 2: + return fromCharCode(uint8[pos], uint8[pos + 1]); + case 3: + return fromCharCode(uint8[pos], uint8[pos + 1], uint8[pos + 2]); + case 4: + return fromCharCode(uint8[pos], uint8[pos + 1], uint8[pos + 2], uint8[pos + 3]); + case 5: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + ); + case 6: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + ); + case 7: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + ); + case 8: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + ); + case 9: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + ); + case 10: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + ); + case 11: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + ); + case 12: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + ); + case 13: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + ); + case 14: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + ); + case 15: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + ); + case 16: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + ); + case 17: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + ); + case 18: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + ); + case 19: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + ); + case 20: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + ); + case 21: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + ); + case 22: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + ); + case 23: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + ); + case 24: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + ); + case 25: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + ); + case 26: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + ); + case 27: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + ); + case 28: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + ); + case 29: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + ); + case 30: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + ); + case 31: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + ); + case 32: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + ); + case 33: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + ); + case 34: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + ); + case 35: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + ); + case 36: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + ); + case 37: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + ); + case 38: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + ); + case 39: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + ); + case 40: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + ); + case 41: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + ); + case 42: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + ); + case 43: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + ); + case 44: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + ); + case 45: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + uint8[pos + 44], + ); + case 46: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + uint8[pos + 44], + uint8[pos + 45], + ); + case 47: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + uint8[pos + 44], + uint8[pos + 45], + uint8[pos + 46], + ); + case 48: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + uint8[pos + 44], + uint8[pos + 45], + uint8[pos + 46], + uint8[pos + 47], + ); + } + return decodeStr(uint8.subarray(pos, end)); } function deserializeVecComment(pos) { diff --git a/napi/parser/src-js/generated/deserialize/ts_parent.js b/napi/parser/src-js/generated/deserialize/ts_parent.js index 9f1c16475f531..c14f733b71351 100644 --- a/napi/parser/src-js/generated/deserialize/ts_parent.js +++ b/napi/parser/src-js/generated/deserialize/ts_parent.js @@ -12,7 +12,7 @@ let uint8, const textDecoder = new TextDecoder("utf-8", { ignoreBOM: true }), decodeStr = textDecoder.decode.bind(textDecoder), - { fromCodePoint } = String; + { fromCodePoint, fromCharCode } = String; export function deserialize(buffer, sourceText, sourceByteLen) { sourceEndPos = sourceByteLen; @@ -5396,22 +5396,1330 @@ function deserializeStr(pos) { pos = uint32[pos32]; if (pos < sourceEndPos && (sourceIsAscii || pos + len <= firstNonAsciiPos)) return sourceText.substr(pos, len); - // Use `TextDecoder` for strings longer than 9 bytes. - // For shorter strings, the byte-by-byte loop below avoids native call overhead. + // Use `TextDecoder` for strings longer than 48 bytes. + // For shorter strings, a single `fromCharCode` call with all byte values is faster + // than both TextDecoder (native call overhead) and the byte-by-byte concat loop. + // V8 optimizes a direct `fromCharCode` call with known argument count much better + // than repeated string concatenation. let end = pos + len; - if (len > 9) return decodeStr(uint8.subarray(pos, end)); - // Shorter strings decode by hand to avoid native call - let out = "", - c; - do { - c = uint8[pos++]; - if (c < 128) out += fromCodePoint(c); - else { - out += decodeStr(uint8.subarray(pos - 1, end)); + if (len > 48) return decodeStr(uint8.subarray(pos, end)); + // Check if all bytes are ASCII + let allAscii = true; + for (let i = pos; i < end; i++) + if (uint8[i] >= 128) { + allAscii = false; break; } - } while (pos < end); - return out; + if (allAscii) + switch (len) { + case 1: + return fromCharCode(uint8[pos]); + case 2: + return fromCharCode(uint8[pos], uint8[pos + 1]); + case 3: + return fromCharCode(uint8[pos], uint8[pos + 1], uint8[pos + 2]); + case 4: + return fromCharCode(uint8[pos], uint8[pos + 1], uint8[pos + 2], uint8[pos + 3]); + case 5: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + ); + case 6: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + ); + case 7: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + ); + case 8: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + ); + case 9: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + ); + case 10: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + ); + case 11: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + ); + case 12: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + ); + case 13: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + ); + case 14: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + ); + case 15: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + ); + case 16: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + ); + case 17: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + ); + case 18: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + ); + case 19: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + ); + case 20: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + ); + case 21: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + ); + case 22: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + ); + case 23: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + ); + case 24: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + ); + case 25: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + ); + case 26: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + ); + case 27: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + ); + case 28: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + ); + case 29: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + ); + case 30: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + ); + case 31: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + ); + case 32: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + ); + case 33: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + ); + case 34: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + ); + case 35: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + ); + case 36: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + ); + case 37: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + ); + case 38: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + ); + case 39: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + ); + case 40: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + ); + case 41: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + ); + case 42: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + ); + case 43: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + ); + case 44: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + ); + case 45: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + uint8[pos + 44], + ); + case 46: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + uint8[pos + 44], + uint8[pos + 45], + ); + case 47: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + uint8[pos + 44], + uint8[pos + 45], + uint8[pos + 46], + ); + case 48: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + uint8[pos + 44], + uint8[pos + 45], + uint8[pos + 46], + uint8[pos + 47], + ); + } + return decodeStr(uint8.subarray(pos, end)); } function deserializeVecComment(pos) { diff --git a/napi/parser/src-js/generated/deserialize/ts_range.js b/napi/parser/src-js/generated/deserialize/ts_range.js index da5c68d3dc99d..240a95a24e844 100644 --- a/napi/parser/src-js/generated/deserialize/ts_range.js +++ b/napi/parser/src-js/generated/deserialize/ts_range.js @@ -5,7 +5,7 @@ let uint8, uint32, float64, sourceText, sourceIsAscii, sourceEndPos, firstNonAsc const textDecoder = new TextDecoder("utf-8", { ignoreBOM: true }), decodeStr = textDecoder.decode.bind(textDecoder), - { fromCodePoint } = String; + { fromCodePoint, fromCharCode } = String; export function deserialize(buffer, sourceText, sourceByteLen) { sourceEndPos = sourceByteLen; @@ -5413,22 +5413,1330 @@ function deserializeStr(pos) { pos = uint32[pos32]; if (pos < sourceEndPos && (sourceIsAscii || pos + len <= firstNonAsciiPos)) return sourceText.substr(pos, len); - // Use `TextDecoder` for strings longer than 9 bytes. - // For shorter strings, the byte-by-byte loop below avoids native call overhead. + // Use `TextDecoder` for strings longer than 48 bytes. + // For shorter strings, a single `fromCharCode` call with all byte values is faster + // than both TextDecoder (native call overhead) and the byte-by-byte concat loop. + // V8 optimizes a direct `fromCharCode` call with known argument count much better + // than repeated string concatenation. let end = pos + len; - if (len > 9) return decodeStr(uint8.subarray(pos, end)); - // Shorter strings decode by hand to avoid native call - let out = "", - c; - do { - c = uint8[pos++]; - if (c < 128) out += fromCodePoint(c); - else { - out += decodeStr(uint8.subarray(pos - 1, end)); + if (len > 48) return decodeStr(uint8.subarray(pos, end)); + // Check if all bytes are ASCII + let allAscii = true; + for (let i = pos; i < end; i++) + if (uint8[i] >= 128) { + allAscii = false; break; } - } while (pos < end); - return out; + if (allAscii) + switch (len) { + case 1: + return fromCharCode(uint8[pos]); + case 2: + return fromCharCode(uint8[pos], uint8[pos + 1]); + case 3: + return fromCharCode(uint8[pos], uint8[pos + 1], uint8[pos + 2]); + case 4: + return fromCharCode(uint8[pos], uint8[pos + 1], uint8[pos + 2], uint8[pos + 3]); + case 5: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + ); + case 6: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + ); + case 7: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + ); + case 8: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + ); + case 9: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + ); + case 10: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + ); + case 11: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + ); + case 12: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + ); + case 13: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + ); + case 14: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + ); + case 15: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + ); + case 16: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + ); + case 17: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + ); + case 18: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + ); + case 19: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + ); + case 20: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + ); + case 21: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + ); + case 22: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + ); + case 23: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + ); + case 24: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + ); + case 25: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + ); + case 26: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + ); + case 27: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + ); + case 28: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + ); + case 29: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + ); + case 30: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + ); + case 31: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + ); + case 32: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + ); + case 33: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + ); + case 34: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + ); + case 35: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + ); + case 36: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + ); + case 37: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + ); + case 38: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + ); + case 39: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + ); + case 40: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + ); + case 41: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + ); + case 42: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + ); + case 43: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + ); + case 44: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + ); + case 45: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + uint8[pos + 44], + ); + case 46: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + uint8[pos + 44], + uint8[pos + 45], + ); + case 47: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + uint8[pos + 44], + uint8[pos + 45], + uint8[pos + 46], + ); + case 48: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + uint8[pos + 44], + uint8[pos + 45], + uint8[pos + 46], + uint8[pos + 47], + ); + } + return decodeStr(uint8.subarray(pos, end)); } function deserializeVecComment(pos) { diff --git a/napi/parser/src-js/generated/deserialize/ts_range_parent.js b/napi/parser/src-js/generated/deserialize/ts_range_parent.js index 944adad33b26e..e2f7c224a7b16 100644 --- a/napi/parser/src-js/generated/deserialize/ts_range_parent.js +++ b/napi/parser/src-js/generated/deserialize/ts_range_parent.js @@ -12,7 +12,7 @@ let uint8, const textDecoder = new TextDecoder("utf-8", { ignoreBOM: true }), decodeStr = textDecoder.decode.bind(textDecoder), - { fromCodePoint } = String; + { fromCodePoint, fromCharCode } = String; export function deserialize(buffer, sourceText, sourceByteLen) { sourceEndPos = sourceByteLen; @@ -5977,22 +5977,1330 @@ function deserializeStr(pos) { pos = uint32[pos32]; if (pos < sourceEndPos && (sourceIsAscii || pos + len <= firstNonAsciiPos)) return sourceText.substr(pos, len); - // Use `TextDecoder` for strings longer than 9 bytes. - // For shorter strings, the byte-by-byte loop below avoids native call overhead. + // Use `TextDecoder` for strings longer than 48 bytes. + // For shorter strings, a single `fromCharCode` call with all byte values is faster + // than both TextDecoder (native call overhead) and the byte-by-byte concat loop. + // V8 optimizes a direct `fromCharCode` call with known argument count much better + // than repeated string concatenation. let end = pos + len; - if (len > 9) return decodeStr(uint8.subarray(pos, end)); - // Shorter strings decode by hand to avoid native call - let out = "", - c; - do { - c = uint8[pos++]; - if (c < 128) out += fromCodePoint(c); - else { - out += decodeStr(uint8.subarray(pos - 1, end)); + if (len > 48) return decodeStr(uint8.subarray(pos, end)); + // Check if all bytes are ASCII + let allAscii = true; + for (let i = pos; i < end; i++) + if (uint8[i] >= 128) { + allAscii = false; break; } - } while (pos < end); - return out; + if (allAscii) + switch (len) { + case 1: + return fromCharCode(uint8[pos]); + case 2: + return fromCharCode(uint8[pos], uint8[pos + 1]); + case 3: + return fromCharCode(uint8[pos], uint8[pos + 1], uint8[pos + 2]); + case 4: + return fromCharCode(uint8[pos], uint8[pos + 1], uint8[pos + 2], uint8[pos + 3]); + case 5: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + ); + case 6: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + ); + case 7: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + ); + case 8: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + ); + case 9: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + ); + case 10: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + ); + case 11: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + ); + case 12: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + ); + case 13: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + ); + case 14: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + ); + case 15: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + ); + case 16: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + ); + case 17: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + ); + case 18: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + ); + case 19: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + ); + case 20: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + ); + case 21: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + ); + case 22: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + ); + case 23: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + ); + case 24: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + ); + case 25: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + ); + case 26: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + ); + case 27: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + ); + case 28: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + ); + case 29: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + ); + case 30: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + ); + case 31: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + ); + case 32: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + ); + case 33: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + ); + case 34: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + ); + case 35: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + ); + case 36: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + ); + case 37: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + ); + case 38: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + ); + case 39: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + ); + case 40: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + ); + case 41: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + ); + case 42: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + ); + case 43: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + ); + case 44: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + ); + case 45: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + uint8[pos + 44], + ); + case 46: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + uint8[pos + 44], + uint8[pos + 45], + ); + case 47: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + uint8[pos + 44], + uint8[pos + 45], + uint8[pos + 46], + ); + case 48: + return fromCharCode( + uint8[pos], + uint8[pos + 1], + uint8[pos + 2], + uint8[pos + 3], + uint8[pos + 4], + uint8[pos + 5], + uint8[pos + 6], + uint8[pos + 7], + uint8[pos + 8], + uint8[pos + 9], + uint8[pos + 10], + uint8[pos + 11], + uint8[pos + 12], + uint8[pos + 13], + uint8[pos + 14], + uint8[pos + 15], + uint8[pos + 16], + uint8[pos + 17], + uint8[pos + 18], + uint8[pos + 19], + uint8[pos + 20], + uint8[pos + 21], + uint8[pos + 22], + uint8[pos + 23], + uint8[pos + 24], + uint8[pos + 25], + uint8[pos + 26], + uint8[pos + 27], + uint8[pos + 28], + uint8[pos + 29], + uint8[pos + 30], + uint8[pos + 31], + uint8[pos + 32], + uint8[pos + 33], + uint8[pos + 34], + uint8[pos + 35], + uint8[pos + 36], + uint8[pos + 37], + uint8[pos + 38], + uint8[pos + 39], + uint8[pos + 40], + uint8[pos + 41], + uint8[pos + 42], + uint8[pos + 43], + uint8[pos + 44], + uint8[pos + 45], + uint8[pos + 46], + uint8[pos + 47], + ); + } + return decodeStr(uint8.subarray(pos, end)); } function deserializeVecComment(pos) { diff --git a/tasks/ast_tools/src/generators/raw_transfer.rs b/tasks/ast_tools/src/generators/raw_transfer.rs index b024b6239aa0e..c102feaef0962 100644 --- a/tasks/ast_tools/src/generators/raw_transfer.rs +++ b/tasks/ast_tools/src/generators/raw_transfer.rs @@ -150,7 +150,7 @@ fn generate_deserializers( const textDecoder = new TextDecoder('utf-8', {{ ignoreBOM: true }}), decodeStr = textDecoder.decode.bind(textDecoder), - {{ fromCodePoint }} = String; + {{ fromCodePoint, fromCharCode }} = String; /* IF LOC */ const NodeProto = Object.create(Object.prototype, {{ @@ -898,25 +898,72 @@ static STR_DESERIALIZER_BODY: &str = " return sourceText.substr(pos, len); } - // Use `TextDecoder` for strings longer than 9 bytes. - // For shorter strings, the byte-by-byte loop below avoids native call overhead. + // Use `TextDecoder` for strings longer than 48 bytes. + // For shorter strings, a single `fromCharCode` call with all byte values is faster + // than both TextDecoder (native call overhead) and the byte-by-byte concat loop. + // V8 optimizes a direct `fromCharCode` call with known argument count much better + // than repeated string concatenation. const end = pos + len; - if (len > 9) return decodeStr(uint8.subarray(pos, end)); - - // Shorter strings decode by hand to avoid native call - let out = '', - c; - do { - c = uint8[pos++]; - if (c < 0x80) { - out += fromCodePoint(c); - } else { - out += decodeStr(uint8.subarray(pos - 1, end)); - break; - } - } while (pos < end); + if (len > 48) return decodeStr(uint8.subarray(pos, end)); - return out; + // Check if all bytes are ASCII + let allAscii = true; + for (let i = pos; i < end; i++) { + if (uint8[i] >= 0x80) { allAscii = false; break; } + } + if (allAscii) { + switch (len) { + case 1: return fromCharCode(uint8[pos]); + case 2: return fromCharCode(uint8[pos], uint8[pos+1]); + case 3: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2]); + case 4: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3]); + case 5: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4]); + case 6: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4], uint8[pos+5]); + case 7: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4], uint8[pos+5], uint8[pos+6]); + case 8: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4], uint8[pos+5], uint8[pos+6], uint8[pos+7]); + case 9: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4], uint8[pos+5], uint8[pos+6], uint8[pos+7], uint8[pos+8]); + case 10: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4], uint8[pos+5], uint8[pos+6], uint8[pos+7], uint8[pos+8], uint8[pos+9]); + case 11: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4], uint8[pos+5], uint8[pos+6], uint8[pos+7], uint8[pos+8], uint8[pos+9], uint8[pos+10]); + case 12: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4], uint8[pos+5], uint8[pos+6], uint8[pos+7], uint8[pos+8], uint8[pos+9], uint8[pos+10], uint8[pos+11]); + case 13: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4], uint8[pos+5], uint8[pos+6], uint8[pos+7], uint8[pos+8], uint8[pos+9], uint8[pos+10], uint8[pos+11], uint8[pos+12]); + case 14: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4], uint8[pos+5], uint8[pos+6], uint8[pos+7], uint8[pos+8], uint8[pos+9], uint8[pos+10], uint8[pos+11], uint8[pos+12], uint8[pos+13]); + case 15: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4], uint8[pos+5], uint8[pos+6], uint8[pos+7], uint8[pos+8], uint8[pos+9], uint8[pos+10], uint8[pos+11], uint8[pos+12], uint8[pos+13], uint8[pos+14]); + case 16: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4], uint8[pos+5], uint8[pos+6], uint8[pos+7], uint8[pos+8], uint8[pos+9], uint8[pos+10], uint8[pos+11], uint8[pos+12], uint8[pos+13], uint8[pos+14], uint8[pos+15]); + case 17: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4], uint8[pos+5], uint8[pos+6], uint8[pos+7], uint8[pos+8], uint8[pos+9], uint8[pos+10], uint8[pos+11], uint8[pos+12], uint8[pos+13], uint8[pos+14], uint8[pos+15], uint8[pos+16]); + case 18: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4], uint8[pos+5], uint8[pos+6], uint8[pos+7], uint8[pos+8], uint8[pos+9], uint8[pos+10], uint8[pos+11], uint8[pos+12], uint8[pos+13], uint8[pos+14], uint8[pos+15], uint8[pos+16], uint8[pos+17]); + case 19: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4], uint8[pos+5], uint8[pos+6], uint8[pos+7], uint8[pos+8], uint8[pos+9], uint8[pos+10], uint8[pos+11], uint8[pos+12], uint8[pos+13], uint8[pos+14], uint8[pos+15], uint8[pos+16], uint8[pos+17], uint8[pos+18]); + case 20: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4], uint8[pos+5], uint8[pos+6], uint8[pos+7], uint8[pos+8], uint8[pos+9], uint8[pos+10], uint8[pos+11], uint8[pos+12], uint8[pos+13], uint8[pos+14], uint8[pos+15], uint8[pos+16], uint8[pos+17], uint8[pos+18], uint8[pos+19]); + case 21: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4], uint8[pos+5], uint8[pos+6], uint8[pos+7], uint8[pos+8], uint8[pos+9], uint8[pos+10], uint8[pos+11], uint8[pos+12], uint8[pos+13], uint8[pos+14], uint8[pos+15], uint8[pos+16], uint8[pos+17], uint8[pos+18], uint8[pos+19], uint8[pos+20]); + case 22: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4], uint8[pos+5], uint8[pos+6], uint8[pos+7], uint8[pos+8], uint8[pos+9], uint8[pos+10], uint8[pos+11], uint8[pos+12], uint8[pos+13], uint8[pos+14], uint8[pos+15], uint8[pos+16], uint8[pos+17], uint8[pos+18], uint8[pos+19], uint8[pos+20], uint8[pos+21]); + case 23: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4], uint8[pos+5], uint8[pos+6], uint8[pos+7], uint8[pos+8], uint8[pos+9], uint8[pos+10], uint8[pos+11], uint8[pos+12], uint8[pos+13], uint8[pos+14], uint8[pos+15], uint8[pos+16], uint8[pos+17], uint8[pos+18], uint8[pos+19], uint8[pos+20], uint8[pos+21], uint8[pos+22]); + case 24: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4], uint8[pos+5], uint8[pos+6], uint8[pos+7], uint8[pos+8], uint8[pos+9], uint8[pos+10], uint8[pos+11], uint8[pos+12], uint8[pos+13], uint8[pos+14], uint8[pos+15], uint8[pos+16], uint8[pos+17], uint8[pos+18], uint8[pos+19], uint8[pos+20], uint8[pos+21], uint8[pos+22], uint8[pos+23]); + case 25: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4], uint8[pos+5], uint8[pos+6], uint8[pos+7], uint8[pos+8], uint8[pos+9], uint8[pos+10], uint8[pos+11], uint8[pos+12], uint8[pos+13], uint8[pos+14], uint8[pos+15], uint8[pos+16], uint8[pos+17], uint8[pos+18], uint8[pos+19], uint8[pos+20], uint8[pos+21], uint8[pos+22], uint8[pos+23], uint8[pos+24]); + case 26: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4], uint8[pos+5], uint8[pos+6], uint8[pos+7], uint8[pos+8], uint8[pos+9], uint8[pos+10], uint8[pos+11], uint8[pos+12], uint8[pos+13], uint8[pos+14], uint8[pos+15], uint8[pos+16], uint8[pos+17], uint8[pos+18], uint8[pos+19], uint8[pos+20], uint8[pos+21], uint8[pos+22], uint8[pos+23], uint8[pos+24], uint8[pos+25]); + case 27: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4], uint8[pos+5], uint8[pos+6], uint8[pos+7], uint8[pos+8], uint8[pos+9], uint8[pos+10], uint8[pos+11], uint8[pos+12], uint8[pos+13], uint8[pos+14], uint8[pos+15], uint8[pos+16], uint8[pos+17], uint8[pos+18], uint8[pos+19], uint8[pos+20], uint8[pos+21], uint8[pos+22], uint8[pos+23], uint8[pos+24], uint8[pos+25], uint8[pos+26]); + case 28: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4], uint8[pos+5], uint8[pos+6], uint8[pos+7], uint8[pos+8], uint8[pos+9], uint8[pos+10], uint8[pos+11], uint8[pos+12], uint8[pos+13], uint8[pos+14], uint8[pos+15], uint8[pos+16], uint8[pos+17], uint8[pos+18], uint8[pos+19], uint8[pos+20], uint8[pos+21], uint8[pos+22], uint8[pos+23], uint8[pos+24], uint8[pos+25], uint8[pos+26], uint8[pos+27]); + case 29: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4], uint8[pos+5], uint8[pos+6], uint8[pos+7], uint8[pos+8], uint8[pos+9], uint8[pos+10], uint8[pos+11], uint8[pos+12], uint8[pos+13], uint8[pos+14], uint8[pos+15], uint8[pos+16], uint8[pos+17], uint8[pos+18], uint8[pos+19], uint8[pos+20], uint8[pos+21], uint8[pos+22], uint8[pos+23], uint8[pos+24], uint8[pos+25], uint8[pos+26], uint8[pos+27], uint8[pos+28]); + case 30: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4], uint8[pos+5], uint8[pos+6], uint8[pos+7], uint8[pos+8], uint8[pos+9], uint8[pos+10], uint8[pos+11], uint8[pos+12], uint8[pos+13], uint8[pos+14], uint8[pos+15], uint8[pos+16], uint8[pos+17], uint8[pos+18], uint8[pos+19], uint8[pos+20], uint8[pos+21], uint8[pos+22], uint8[pos+23], uint8[pos+24], uint8[pos+25], uint8[pos+26], uint8[pos+27], uint8[pos+28], uint8[pos+29]); + case 31: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4], uint8[pos+5], uint8[pos+6], uint8[pos+7], uint8[pos+8], uint8[pos+9], uint8[pos+10], uint8[pos+11], uint8[pos+12], uint8[pos+13], uint8[pos+14], uint8[pos+15], uint8[pos+16], uint8[pos+17], uint8[pos+18], uint8[pos+19], uint8[pos+20], uint8[pos+21], uint8[pos+22], uint8[pos+23], uint8[pos+24], uint8[pos+25], uint8[pos+26], uint8[pos+27], uint8[pos+28], uint8[pos+29], uint8[pos+30]); + case 32: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4], uint8[pos+5], uint8[pos+6], uint8[pos+7], uint8[pos+8], uint8[pos+9], uint8[pos+10], uint8[pos+11], uint8[pos+12], uint8[pos+13], uint8[pos+14], uint8[pos+15], uint8[pos+16], uint8[pos+17], uint8[pos+18], uint8[pos+19], uint8[pos+20], uint8[pos+21], uint8[pos+22], uint8[pos+23], uint8[pos+24], uint8[pos+25], uint8[pos+26], uint8[pos+27], uint8[pos+28], uint8[pos+29], uint8[pos+30], uint8[pos+31]); + case 33: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4], uint8[pos+5], uint8[pos+6], uint8[pos+7], uint8[pos+8], uint8[pos+9], uint8[pos+10], uint8[pos+11], uint8[pos+12], uint8[pos+13], uint8[pos+14], uint8[pos+15], uint8[pos+16], uint8[pos+17], uint8[pos+18], uint8[pos+19], uint8[pos+20], uint8[pos+21], uint8[pos+22], uint8[pos+23], uint8[pos+24], uint8[pos+25], uint8[pos+26], uint8[pos+27], uint8[pos+28], uint8[pos+29], uint8[pos+30], uint8[pos+31], uint8[pos+32]); + case 34: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4], uint8[pos+5], uint8[pos+6], uint8[pos+7], uint8[pos+8], uint8[pos+9], uint8[pos+10], uint8[pos+11], uint8[pos+12], uint8[pos+13], uint8[pos+14], uint8[pos+15], uint8[pos+16], uint8[pos+17], uint8[pos+18], uint8[pos+19], uint8[pos+20], uint8[pos+21], uint8[pos+22], uint8[pos+23], uint8[pos+24], uint8[pos+25], uint8[pos+26], uint8[pos+27], uint8[pos+28], uint8[pos+29], uint8[pos+30], uint8[pos+31], uint8[pos+32], uint8[pos+33]); + case 35: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4], uint8[pos+5], uint8[pos+6], uint8[pos+7], uint8[pos+8], uint8[pos+9], uint8[pos+10], uint8[pos+11], uint8[pos+12], uint8[pos+13], uint8[pos+14], uint8[pos+15], uint8[pos+16], uint8[pos+17], uint8[pos+18], uint8[pos+19], uint8[pos+20], uint8[pos+21], uint8[pos+22], uint8[pos+23], uint8[pos+24], uint8[pos+25], uint8[pos+26], uint8[pos+27], uint8[pos+28], uint8[pos+29], uint8[pos+30], uint8[pos+31], uint8[pos+32], uint8[pos+33], uint8[pos+34]); + case 36: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4], uint8[pos+5], uint8[pos+6], uint8[pos+7], uint8[pos+8], uint8[pos+9], uint8[pos+10], uint8[pos+11], uint8[pos+12], uint8[pos+13], uint8[pos+14], uint8[pos+15], uint8[pos+16], uint8[pos+17], uint8[pos+18], uint8[pos+19], uint8[pos+20], uint8[pos+21], uint8[pos+22], uint8[pos+23], uint8[pos+24], uint8[pos+25], uint8[pos+26], uint8[pos+27], uint8[pos+28], uint8[pos+29], uint8[pos+30], uint8[pos+31], uint8[pos+32], uint8[pos+33], uint8[pos+34], uint8[pos+35]); + case 37: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4], uint8[pos+5], uint8[pos+6], uint8[pos+7], uint8[pos+8], uint8[pos+9], uint8[pos+10], uint8[pos+11], uint8[pos+12], uint8[pos+13], uint8[pos+14], uint8[pos+15], uint8[pos+16], uint8[pos+17], uint8[pos+18], uint8[pos+19], uint8[pos+20], uint8[pos+21], uint8[pos+22], uint8[pos+23], uint8[pos+24], uint8[pos+25], uint8[pos+26], uint8[pos+27], uint8[pos+28], uint8[pos+29], uint8[pos+30], uint8[pos+31], uint8[pos+32], uint8[pos+33], uint8[pos+34], uint8[pos+35], uint8[pos+36]); + case 38: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4], uint8[pos+5], uint8[pos+6], uint8[pos+7], uint8[pos+8], uint8[pos+9], uint8[pos+10], uint8[pos+11], uint8[pos+12], uint8[pos+13], uint8[pos+14], uint8[pos+15], uint8[pos+16], uint8[pos+17], uint8[pos+18], uint8[pos+19], uint8[pos+20], uint8[pos+21], uint8[pos+22], uint8[pos+23], uint8[pos+24], uint8[pos+25], uint8[pos+26], uint8[pos+27], uint8[pos+28], uint8[pos+29], uint8[pos+30], uint8[pos+31], uint8[pos+32], uint8[pos+33], uint8[pos+34], uint8[pos+35], uint8[pos+36], uint8[pos+37]); + case 39: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4], uint8[pos+5], uint8[pos+6], uint8[pos+7], uint8[pos+8], uint8[pos+9], uint8[pos+10], uint8[pos+11], uint8[pos+12], uint8[pos+13], uint8[pos+14], uint8[pos+15], uint8[pos+16], uint8[pos+17], uint8[pos+18], uint8[pos+19], uint8[pos+20], uint8[pos+21], uint8[pos+22], uint8[pos+23], uint8[pos+24], uint8[pos+25], uint8[pos+26], uint8[pos+27], uint8[pos+28], uint8[pos+29], uint8[pos+30], uint8[pos+31], uint8[pos+32], uint8[pos+33], uint8[pos+34], uint8[pos+35], uint8[pos+36], uint8[pos+37], uint8[pos+38]); + case 40: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4], uint8[pos+5], uint8[pos+6], uint8[pos+7], uint8[pos+8], uint8[pos+9], uint8[pos+10], uint8[pos+11], uint8[pos+12], uint8[pos+13], uint8[pos+14], uint8[pos+15], uint8[pos+16], uint8[pos+17], uint8[pos+18], uint8[pos+19], uint8[pos+20], uint8[pos+21], uint8[pos+22], uint8[pos+23], uint8[pos+24], uint8[pos+25], uint8[pos+26], uint8[pos+27], uint8[pos+28], uint8[pos+29], uint8[pos+30], uint8[pos+31], uint8[pos+32], uint8[pos+33], uint8[pos+34], uint8[pos+35], uint8[pos+36], uint8[pos+37], uint8[pos+38], uint8[pos+39]); + case 41: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4], uint8[pos+5], uint8[pos+6], uint8[pos+7], uint8[pos+8], uint8[pos+9], uint8[pos+10], uint8[pos+11], uint8[pos+12], uint8[pos+13], uint8[pos+14], uint8[pos+15], uint8[pos+16], uint8[pos+17], uint8[pos+18], uint8[pos+19], uint8[pos+20], uint8[pos+21], uint8[pos+22], uint8[pos+23], uint8[pos+24], uint8[pos+25], uint8[pos+26], uint8[pos+27], uint8[pos+28], uint8[pos+29], uint8[pos+30], uint8[pos+31], uint8[pos+32], uint8[pos+33], uint8[pos+34], uint8[pos+35], uint8[pos+36], uint8[pos+37], uint8[pos+38], uint8[pos+39], uint8[pos+40]); + case 42: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4], uint8[pos+5], uint8[pos+6], uint8[pos+7], uint8[pos+8], uint8[pos+9], uint8[pos+10], uint8[pos+11], uint8[pos+12], uint8[pos+13], uint8[pos+14], uint8[pos+15], uint8[pos+16], uint8[pos+17], uint8[pos+18], uint8[pos+19], uint8[pos+20], uint8[pos+21], uint8[pos+22], uint8[pos+23], uint8[pos+24], uint8[pos+25], uint8[pos+26], uint8[pos+27], uint8[pos+28], uint8[pos+29], uint8[pos+30], uint8[pos+31], uint8[pos+32], uint8[pos+33], uint8[pos+34], uint8[pos+35], uint8[pos+36], uint8[pos+37], uint8[pos+38], uint8[pos+39], uint8[pos+40], uint8[pos+41]); + case 43: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4], uint8[pos+5], uint8[pos+6], uint8[pos+7], uint8[pos+8], uint8[pos+9], uint8[pos+10], uint8[pos+11], uint8[pos+12], uint8[pos+13], uint8[pos+14], uint8[pos+15], uint8[pos+16], uint8[pos+17], uint8[pos+18], uint8[pos+19], uint8[pos+20], uint8[pos+21], uint8[pos+22], uint8[pos+23], uint8[pos+24], uint8[pos+25], uint8[pos+26], uint8[pos+27], uint8[pos+28], uint8[pos+29], uint8[pos+30], uint8[pos+31], uint8[pos+32], uint8[pos+33], uint8[pos+34], uint8[pos+35], uint8[pos+36], uint8[pos+37], uint8[pos+38], uint8[pos+39], uint8[pos+40], uint8[pos+41], uint8[pos+42]); + case 44: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4], uint8[pos+5], uint8[pos+6], uint8[pos+7], uint8[pos+8], uint8[pos+9], uint8[pos+10], uint8[pos+11], uint8[pos+12], uint8[pos+13], uint8[pos+14], uint8[pos+15], uint8[pos+16], uint8[pos+17], uint8[pos+18], uint8[pos+19], uint8[pos+20], uint8[pos+21], uint8[pos+22], uint8[pos+23], uint8[pos+24], uint8[pos+25], uint8[pos+26], uint8[pos+27], uint8[pos+28], uint8[pos+29], uint8[pos+30], uint8[pos+31], uint8[pos+32], uint8[pos+33], uint8[pos+34], uint8[pos+35], uint8[pos+36], uint8[pos+37], uint8[pos+38], uint8[pos+39], uint8[pos+40], uint8[pos+41], uint8[pos+42], uint8[pos+43]); + case 45: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4], uint8[pos+5], uint8[pos+6], uint8[pos+7], uint8[pos+8], uint8[pos+9], uint8[pos+10], uint8[pos+11], uint8[pos+12], uint8[pos+13], uint8[pos+14], uint8[pos+15], uint8[pos+16], uint8[pos+17], uint8[pos+18], uint8[pos+19], uint8[pos+20], uint8[pos+21], uint8[pos+22], uint8[pos+23], uint8[pos+24], uint8[pos+25], uint8[pos+26], uint8[pos+27], uint8[pos+28], uint8[pos+29], uint8[pos+30], uint8[pos+31], uint8[pos+32], uint8[pos+33], uint8[pos+34], uint8[pos+35], uint8[pos+36], uint8[pos+37], uint8[pos+38], uint8[pos+39], uint8[pos+40], uint8[pos+41], uint8[pos+42], uint8[pos+43], uint8[pos+44]); + case 46: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4], uint8[pos+5], uint8[pos+6], uint8[pos+7], uint8[pos+8], uint8[pos+9], uint8[pos+10], uint8[pos+11], uint8[pos+12], uint8[pos+13], uint8[pos+14], uint8[pos+15], uint8[pos+16], uint8[pos+17], uint8[pos+18], uint8[pos+19], uint8[pos+20], uint8[pos+21], uint8[pos+22], uint8[pos+23], uint8[pos+24], uint8[pos+25], uint8[pos+26], uint8[pos+27], uint8[pos+28], uint8[pos+29], uint8[pos+30], uint8[pos+31], uint8[pos+32], uint8[pos+33], uint8[pos+34], uint8[pos+35], uint8[pos+36], uint8[pos+37], uint8[pos+38], uint8[pos+39], uint8[pos+40], uint8[pos+41], uint8[pos+42], uint8[pos+43], uint8[pos+44], uint8[pos+45]); + case 47: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4], uint8[pos+5], uint8[pos+6], uint8[pos+7], uint8[pos+8], uint8[pos+9], uint8[pos+10], uint8[pos+11], uint8[pos+12], uint8[pos+13], uint8[pos+14], uint8[pos+15], uint8[pos+16], uint8[pos+17], uint8[pos+18], uint8[pos+19], uint8[pos+20], uint8[pos+21], uint8[pos+22], uint8[pos+23], uint8[pos+24], uint8[pos+25], uint8[pos+26], uint8[pos+27], uint8[pos+28], uint8[pos+29], uint8[pos+30], uint8[pos+31], uint8[pos+32], uint8[pos+33], uint8[pos+34], uint8[pos+35], uint8[pos+36], uint8[pos+37], uint8[pos+38], uint8[pos+39], uint8[pos+40], uint8[pos+41], uint8[pos+42], uint8[pos+43], uint8[pos+44], uint8[pos+45], uint8[pos+46]); + case 48: return fromCharCode(uint8[pos], uint8[pos+1], uint8[pos+2], uint8[pos+3], uint8[pos+4], uint8[pos+5], uint8[pos+6], uint8[pos+7], uint8[pos+8], uint8[pos+9], uint8[pos+10], uint8[pos+11], uint8[pos+12], uint8[pos+13], uint8[pos+14], uint8[pos+15], uint8[pos+16], uint8[pos+17], uint8[pos+18], uint8[pos+19], uint8[pos+20], uint8[pos+21], uint8[pos+22], uint8[pos+23], uint8[pos+24], uint8[pos+25], uint8[pos+26], uint8[pos+27], uint8[pos+28], uint8[pos+29], uint8[pos+30], uint8[pos+31], uint8[pos+32], uint8[pos+33], uint8[pos+34], uint8[pos+35], uint8[pos+36], uint8[pos+37], uint8[pos+38], uint8[pos+39], uint8[pos+40], uint8[pos+41], uint8[pos+42], uint8[pos+43], uint8[pos+44], uint8[pos+45], uint8[pos+46], uint8[pos+47]); + } + } + return decodeStr(uint8.subarray(pos, end)); "; /// Generate deserialize function for an `Option`.