Skip to content

Commit 9f494c3

Browse files
committed
perf(napi/parser, linter/plugins): raw transfer use String.fromCharCode in string decoding (#21018)
Small optimization to raw transfer string deserialization. Use `String.fromCharCode`instead of `String.fromCodePoint`. [Benchmarking](https://github.com/overlookmotel/oxc-raw-str-bench) showed it's slightly faster, as it's simpler - doesn't need to handle astral code points.
1 parent ac39e51 commit 9f494c3

10 files changed

Lines changed: 20 additions & 20 deletions

File tree

apps/oxlint/src-js/generated/deserialize.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ let uint8,
1616

1717
const textDecoder = new TextDecoder("utf-8", { ignoreBOM: true }),
1818
decodeStr = textDecoder.decode.bind(textDecoder),
19-
{ fromCodePoint } = String,
19+
{ fromCharCode } = String,
2020
NodeProto = Object.create(Object.prototype, {
2121
loc: {
2222
get() {
@@ -5894,7 +5894,7 @@ function deserializeStr(pos) {
58945894
c;
58955895
do {
58965896
c = uint8[pos++];
5897-
if (c < 128) out += fromCodePoint(c);
5897+
if (c < 128) out += fromCharCode(c);
58985898
else {
58995899
out += decodeStr(uint8.subarray(pos - 1, end));
59005900
break;

napi/parser/src-js/generated/deserialize/js.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ let uint8, uint32, float64, sourceText, sourceIsAscii, sourceEndPos, firstNonAsc
55

66
const textDecoder = new TextDecoder("utf-8", { ignoreBOM: true }),
77
decodeStr = textDecoder.decode.bind(textDecoder),
8-
{ fromCodePoint } = String;
8+
{ fromCharCode } = String;
99

1010
export function deserialize(buffer, sourceText, sourceByteLen) {
1111
sourceEndPos = sourceByteLen;
@@ -4557,7 +4557,7 @@ function deserializeStr(pos) {
45574557
c;
45584558
do {
45594559
c = uint8[pos++];
4560-
if (c < 128) out += fromCodePoint(c);
4560+
if (c < 128) out += fromCharCode(c);
45614561
else {
45624562
out += decodeStr(uint8.subarray(pos - 1, end));
45634563
break;

napi/parser/src-js/generated/deserialize/js_parent.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ let uint8,
1212

1313
const textDecoder = new TextDecoder("utf-8", { ignoreBOM: true }),
1414
decodeStr = textDecoder.decode.bind(textDecoder),
15-
{ fromCodePoint } = String;
15+
{ fromCharCode } = String;
1616

1717
export function deserialize(buffer, sourceText, sourceByteLen) {
1818
sourceEndPos = sourceByteLen;
@@ -5094,7 +5094,7 @@ function deserializeStr(pos) {
50945094
c;
50955095
do {
50965096
c = uint8[pos++];
5097-
if (c < 128) out += fromCodePoint(c);
5097+
if (c < 128) out += fromCharCode(c);
50985098
else {
50995099
out += decodeStr(uint8.subarray(pos - 1, end));
51005100
break;

napi/parser/src-js/generated/deserialize/js_range.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ let uint8, uint32, float64, sourceText, sourceIsAscii, sourceEndPos, firstNonAsc
55

66
const textDecoder = new TextDecoder("utf-8", { ignoreBOM: true }),
77
decodeStr = textDecoder.decode.bind(textDecoder),
8-
{ fromCodePoint } = String;
8+
{ fromCharCode } = String;
99

1010
export function deserialize(buffer, sourceText, sourceByteLen) {
1111
sourceEndPos = sourceByteLen;
@@ -5099,7 +5099,7 @@ function deserializeStr(pos) {
50995099
c;
51005100
do {
51015101
c = uint8[pos++];
5102-
if (c < 128) out += fromCodePoint(c);
5102+
if (c < 128) out += fromCharCode(c);
51035103
else {
51045104
out += decodeStr(uint8.subarray(pos - 1, end));
51055105
break;

napi/parser/src-js/generated/deserialize/js_range_parent.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ let uint8,
1212

1313
const textDecoder = new TextDecoder("utf-8", { ignoreBOM: true }),
1414
decodeStr = textDecoder.decode.bind(textDecoder),
15-
{ fromCodePoint } = String;
15+
{ fromCharCode } = String;
1616

1717
export function deserialize(buffer, sourceText, sourceByteLen) {
1818
sourceEndPos = sourceByteLen;
@@ -5639,7 +5639,7 @@ function deserializeStr(pos) {
56395639
c;
56405640
do {
56415641
c = uint8[pos++];
5642-
if (c < 128) out += fromCodePoint(c);
5642+
if (c < 128) out += fromCharCode(c);
56435643
else {
56445644
out += decodeStr(uint8.subarray(pos - 1, end));
56455645
break;

napi/parser/src-js/generated/deserialize/ts.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ let uint8, uint32, float64, sourceText, sourceIsAscii, sourceEndPos, firstNonAsc
55

66
const textDecoder = new TextDecoder("utf-8", { ignoreBOM: true }),
77
decodeStr = textDecoder.decode.bind(textDecoder),
8-
{ fromCodePoint } = String;
8+
{ fromCharCode } = String;
99

1010
export function deserialize(buffer, sourceText, sourceByteLen) {
1111
sourceEndPos = sourceByteLen;
@@ -4866,7 +4866,7 @@ function deserializeStr(pos) {
48664866
c;
48674867
do {
48684868
c = uint8[pos++];
4869-
if (c < 128) out += fromCodePoint(c);
4869+
if (c < 128) out += fromCharCode(c);
48704870
else {
48714871
out += decodeStr(uint8.subarray(pos - 1, end));
48724872
break;

napi/parser/src-js/generated/deserialize/ts_parent.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ let uint8,
1212

1313
const textDecoder = new TextDecoder("utf-8", { ignoreBOM: true }),
1414
decodeStr = textDecoder.decode.bind(textDecoder),
15-
{ fromCodePoint } = String;
15+
{ fromCharCode } = String;
1616

1717
export function deserialize(buffer, sourceText, sourceByteLen) {
1818
sourceEndPos = sourceByteLen;
@@ -5430,7 +5430,7 @@ function deserializeStr(pos) {
54305430
c;
54315431
do {
54325432
c = uint8[pos++];
5433-
if (c < 128) out += fromCodePoint(c);
5433+
if (c < 128) out += fromCharCode(c);
54345434
else {
54355435
out += decodeStr(uint8.subarray(pos - 1, end));
54365436
break;

napi/parser/src-js/generated/deserialize/ts_range.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ let uint8, uint32, float64, sourceText, sourceIsAscii, sourceEndPos, firstNonAsc
55

66
const textDecoder = new TextDecoder("utf-8", { ignoreBOM: true }),
77
decodeStr = textDecoder.decode.bind(textDecoder),
8-
{ fromCodePoint } = String;
8+
{ fromCharCode } = String;
99

1010
export function deserialize(buffer, sourceText, sourceByteLen) {
1111
sourceEndPos = sourceByteLen;
@@ -5439,7 +5439,7 @@ function deserializeStr(pos) {
54395439
c;
54405440
do {
54415441
c = uint8[pos++];
5442-
if (c < 128) out += fromCodePoint(c);
5442+
if (c < 128) out += fromCharCode(c);
54435443
else {
54445444
out += decodeStr(uint8.subarray(pos - 1, end));
54455445
break;

napi/parser/src-js/generated/deserialize/ts_range_parent.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ let uint8,
1212

1313
const textDecoder = new TextDecoder("utf-8", { ignoreBOM: true }),
1414
decodeStr = textDecoder.decode.bind(textDecoder),
15-
{ fromCodePoint } = String;
15+
{ fromCharCode } = String;
1616

1717
export function deserialize(buffer, sourceText, sourceByteLen) {
1818
sourceEndPos = sourceByteLen;
@@ -6003,7 +6003,7 @@ function deserializeStr(pos) {
60036003
c;
60046004
do {
60056005
c = uint8[pos++];
6006-
if (c < 128) out += fromCodePoint(c);
6006+
if (c < 128) out += fromCharCode(c);
60076007
else {
60086008
out += decodeStr(uint8.subarray(pos - 1, end));
60096009
break;

tasks/ast_tools/src/generators/raw_transfer.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ fn generate_deserializers(
150150
151151
const textDecoder = new TextDecoder('utf-8', {{ ignoreBOM: true }}),
152152
decodeStr = textDecoder.decode.bind(textDecoder),
153-
{{ fromCodePoint }} = String;
153+
{{ fromCharCode }} = String;
154154
155155
/* IF LOC */
156156
const NodeProto = Object.create(Object.prototype, {{
@@ -948,7 +948,7 @@ static STR_DESERIALIZER_BODY: &str = "
948948
do {
949949
c = uint8[pos++];
950950
if (c < 0x80) {
951-
out += fromCodePoint(c);
951+
out += fromCharCode(c);
952952
} else {
953953
out += decodeStr(uint8.subarray(pos - 1, end));
954954
break;

0 commit comments

Comments
 (0)