Skip to content

Commit ec2f410

Browse files
committed
perf(ast_tools/raw_transfer): use separate Allocator for printing deserializers (#14348)
Improve perf of raw transfer codegen by using a separate `Allocator` for generating specialized deserializer impls in, and clear and reuse it for each deserializer.
1 parent 5ba5e0b commit ec2f410

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

tasks/ast_tools/src/generators/raw_transfer.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -216,14 +216,16 @@ fn generate_deserializers(
216216

217217
// Create deserializers with various settings, by setting `IS_TS`, `RANGE` and `PRESERVE_PARENS` consts,
218218
// and running through minifier to shake out irrelevant code
219+
let mut print_allocator = Allocator::new();
219220
let mut deserializers = vec![];
220221
let mut create_deserializer = |is_ts, range, parent, preserve_parens| {
221-
let mut program = program.clone_in(&allocator);
222+
let mut program = program.clone_in(&print_allocator);
222223
replace_const(&mut program, "IS_TS", is_ts);
223224
replace_const(&mut program, "RANGE", range);
224225
replace_const(&mut program, "PARENT", parent);
225226
replace_const(&mut program, "PRESERVE_PARENS", preserve_parens);
226-
let code = print_minified(&mut program, &allocator);
227+
let code = print_minified(&mut program, &print_allocator);
228+
print_allocator.reset();
227229

228230
let mut name = if is_ts { "ts" } else { "js" }.to_string();
229231
if range {

0 commit comments

Comments
 (0)