Skip to content

Commit fb52383

Browse files
committed
perf(napi/parser, linter/plugins): clear buffers and source texts earlier (#21025)
There's no need to defer clearing vars containing buffers and source text in raw transfer deserializer module until end of linting. It was a left-over from when this module contained code which lazily deserialized comments, but that's now done elsewhere. Clear these vars as soon as deserialization is complete. Buffer and `sourceText` are still held in vars in other modules until linting completes, but `sourceTextLatin` (introduced in #21021) can be freed immediately.
1 parent 3b7dec4 commit fb52383

10 files changed

Lines changed: 39 additions & 37 deletions

File tree

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,9 @@ function deserializeWith(buffer, sourceTextInput, sourceByteLen, getLocInput, de
5555
sourceTextLatin = latin1Slice.call(uint8, sourceStartPos, sourceEndPos);
5656
}
5757
getLoc = getLocInput;
58-
return deserialize(uint32[536870900]);
58+
let data = deserialize(uint32[536870900]);
59+
resetBuffer();
60+
return data;
5961
}
6062

6163
export function resetBuffer() {

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,7 @@ for (let i = 0; i <= 64; i++) stringDecodeArrays[i] = Array(i).fill(0);
1616

1717
export function deserialize(buffer, sourceText, sourceByteLen) {
1818
sourceEndPos = sourceByteLen;
19-
let data = deserializeWith(buffer, sourceText, sourceByteLen, null, deserializeRawTransferData);
20-
resetBuffer();
21-
return data;
19+
return deserializeWith(buffer, sourceText, sourceByteLen, null, deserializeRawTransferData);
2220
}
2321

2422
function deserializeWith(buffer, sourceTextInput, sourceByteLen, getLocInput, deserialize) {
@@ -35,7 +33,9 @@ function deserializeWith(buffer, sourceTextInput, sourceByteLen, getLocInput, de
3533
firstNonAsciiPos = i;
3634
sourceTextLatin = latin1Slice.call(uint8, 0, sourceByteLen);
3735
}
38-
return deserialize(uint32[536870900]);
36+
let data = deserialize(uint32[536870900]);
37+
resetBuffer();
38+
return data;
3939
}
4040

4141
export function resetBuffer() {

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,7 @@ for (let i = 0; i <= 64; i++) stringDecodeArrays[i] = Array(i).fill(0);
1717

1818
export function deserialize(buffer, sourceText, sourceByteLen) {
1919
sourceEndPos = sourceByteLen;
20-
let data = deserializeWith(buffer, sourceText, sourceByteLen, null, deserializeRawTransferData);
21-
resetBuffer();
22-
return data;
20+
return deserializeWith(buffer, sourceText, sourceByteLen, null, deserializeRawTransferData);
2321
}
2422

2523
function deserializeWith(buffer, sourceTextInput, sourceByteLen, getLocInput, deserialize) {
@@ -36,7 +34,9 @@ function deserializeWith(buffer, sourceTextInput, sourceByteLen, getLocInput, de
3634
firstNonAsciiPos = i;
3735
sourceTextLatin = latin1Slice.call(uint8, 0, sourceByteLen);
3836
}
39-
return deserialize(uint32[536870900]);
37+
let data = deserialize(uint32[536870900]);
38+
resetBuffer();
39+
return data;
4040
}
4141

4242
export function resetBuffer() {

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,7 @@ for (let i = 0; i <= 64; i++) stringDecodeArrays[i] = Array(i).fill(0);
1616

1717
export function deserialize(buffer, sourceText, sourceByteLen) {
1818
sourceEndPos = sourceByteLen;
19-
let data = deserializeWith(buffer, sourceText, sourceByteLen, null, deserializeRawTransferData);
20-
resetBuffer();
21-
return data;
19+
return deserializeWith(buffer, sourceText, sourceByteLen, null, deserializeRawTransferData);
2220
}
2321

2422
function deserializeWith(buffer, sourceTextInput, sourceByteLen, getLocInput, deserialize) {
@@ -35,7 +33,9 @@ function deserializeWith(buffer, sourceTextInput, sourceByteLen, getLocInput, de
3533
firstNonAsciiPos = i;
3634
sourceTextLatin = latin1Slice.call(uint8, 0, sourceByteLen);
3735
}
38-
return deserialize(uint32[536870900]);
36+
let data = deserialize(uint32[536870900]);
37+
resetBuffer();
38+
return data;
3939
}
4040

4141
export function resetBuffer() {

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,7 @@ for (let i = 0; i <= 64; i++) stringDecodeArrays[i] = Array(i).fill(0);
1717

1818
export function deserialize(buffer, sourceText, sourceByteLen) {
1919
sourceEndPos = sourceByteLen;
20-
let data = deserializeWith(buffer, sourceText, sourceByteLen, null, deserializeRawTransferData);
21-
resetBuffer();
22-
return data;
20+
return deserializeWith(buffer, sourceText, sourceByteLen, null, deserializeRawTransferData);
2321
}
2422

2523
function deserializeWith(buffer, sourceTextInput, sourceByteLen, getLocInput, deserialize) {
@@ -36,7 +34,9 @@ function deserializeWith(buffer, sourceTextInput, sourceByteLen, getLocInput, de
3634
firstNonAsciiPos = i;
3735
sourceTextLatin = latin1Slice.call(uint8, 0, sourceByteLen);
3836
}
39-
return deserialize(uint32[536870900]);
37+
let data = deserialize(uint32[536870900]);
38+
resetBuffer();
39+
return data;
4040
}
4141

4242
export function resetBuffer() {

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,7 @@ for (let i = 0; i <= 64; i++) stringDecodeArrays[i] = Array(i).fill(0);
1616

1717
export function deserialize(buffer, sourceText, sourceByteLen) {
1818
sourceEndPos = sourceByteLen;
19-
let data = deserializeWith(buffer, sourceText, sourceByteLen, null, deserializeRawTransferData);
20-
resetBuffer();
21-
return data;
19+
return deserializeWith(buffer, sourceText, sourceByteLen, null, deserializeRawTransferData);
2220
}
2321

2422
function deserializeWith(buffer, sourceTextInput, sourceByteLen, getLocInput, deserialize) {
@@ -35,7 +33,9 @@ function deserializeWith(buffer, sourceTextInput, sourceByteLen, getLocInput, de
3533
firstNonAsciiPos = i;
3634
sourceTextLatin = latin1Slice.call(uint8, 0, sourceByteLen);
3735
}
38-
return deserialize(uint32[536870900]);
36+
let data = deserialize(uint32[536870900]);
37+
resetBuffer();
38+
return data;
3939
}
4040

4141
export function resetBuffer() {

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,7 @@ for (let i = 0; i <= 64; i++) stringDecodeArrays[i] = Array(i).fill(0);
1717

1818
export function deserialize(buffer, sourceText, sourceByteLen) {
1919
sourceEndPos = sourceByteLen;
20-
let data = deserializeWith(buffer, sourceText, sourceByteLen, null, deserializeRawTransferData);
21-
resetBuffer();
22-
return data;
20+
return deserializeWith(buffer, sourceText, sourceByteLen, null, deserializeRawTransferData);
2321
}
2422

2523
function deserializeWith(buffer, sourceTextInput, sourceByteLen, getLocInput, deserialize) {
@@ -36,7 +34,9 @@ function deserializeWith(buffer, sourceTextInput, sourceByteLen, getLocInput, de
3634
firstNonAsciiPos = i;
3735
sourceTextLatin = latin1Slice.call(uint8, 0, sourceByteLen);
3836
}
39-
return deserialize(uint32[536870900]);
37+
let data = deserialize(uint32[536870900]);
38+
resetBuffer();
39+
return data;
4040
}
4141

4242
export function resetBuffer() {

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,7 @@ for (let i = 0; i <= 64; i++) stringDecodeArrays[i] = Array(i).fill(0);
1616

1717
export function deserialize(buffer, sourceText, sourceByteLen) {
1818
sourceEndPos = sourceByteLen;
19-
let data = deserializeWith(buffer, sourceText, sourceByteLen, null, deserializeRawTransferData);
20-
resetBuffer();
21-
return data;
19+
return deserializeWith(buffer, sourceText, sourceByteLen, null, deserializeRawTransferData);
2220
}
2321

2422
function deserializeWith(buffer, sourceTextInput, sourceByteLen, getLocInput, deserialize) {
@@ -35,7 +33,9 @@ function deserializeWith(buffer, sourceTextInput, sourceByteLen, getLocInput, de
3533
firstNonAsciiPos = i;
3634
sourceTextLatin = latin1Slice.call(uint8, 0, sourceByteLen);
3735
}
38-
return deserialize(uint32[536870900]);
36+
let data = deserialize(uint32[536870900]);
37+
resetBuffer();
38+
return data;
3939
}
4040

4141
export function resetBuffer() {

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,7 @@ for (let i = 0; i <= 64; i++) stringDecodeArrays[i] = Array(i).fill(0);
1717

1818
export function deserialize(buffer, sourceText, sourceByteLen) {
1919
sourceEndPos = sourceByteLen;
20-
let data = deserializeWith(buffer, sourceText, sourceByteLen, null, deserializeRawTransferData);
21-
resetBuffer();
22-
return data;
20+
return deserializeWith(buffer, sourceText, sourceByteLen, null, deserializeRawTransferData);
2321
}
2422

2523
function deserializeWith(buffer, sourceTextInput, sourceByteLen, getLocInput, deserialize) {
@@ -36,7 +34,9 @@ function deserializeWith(buffer, sourceTextInput, sourceByteLen, getLocInput, de
3634
firstNonAsciiPos = i;
3735
sourceTextLatin = latin1Slice.call(uint8, 0, sourceByteLen);
3836
}
39-
return deserialize(uint32[536870900]);
37+
let data = deserialize(uint32[536870900]);
38+
resetBuffer();
39+
return data;
4040
}
4141

4242
export function resetBuffer() {

tasks/ast_tools/src/generators/raw_transfer.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -176,9 +176,7 @@ fn generate_deserializers(
176176
/* IF !LINTER */
177177
export function deserialize(buffer, sourceText, sourceByteLen) {{
178178
sourceEndPos = sourceByteLen;
179-
const data = deserializeWith(buffer, sourceText, sourceByteLen, null, deserializeRawTransferData);
180-
resetBuffer();
181-
return data;
179+
return deserializeWith(buffer, sourceText, sourceByteLen, null, deserializeRawTransferData);
182180
}}
183181
/* END_IF */
184182
@@ -229,7 +227,9 @@ fn generate_deserializers(
229227
230228
if (LOC) getLoc = getLocInput;
231229
232-
return deserialize(uint32[{data_pointer_pos_32}]);
230+
const data = deserialize(uint32[{data_pointer_pos_32}]);
231+
resetBuffer();
232+
return data;
233233
}}
234234
235235
export function resetBuffer() {{

0 commit comments

Comments
 (0)