From 34ee7ee492a0541e3fbc68b14f4a281e7271091a Mon Sep 17 00:00:00 2001 From: pshu Date: Tue, 2 Jan 2024 16:43:19 +0800 Subject: [PATCH] chore: micro perf improve (#835) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * refactor: 🎨 remove unnessary clone * refactor: 🎨 use take over clone --- crates/mako/src/transform.rs | 8 +++++++- crates/mako/src/transform_in_generate.rs | 8 ++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/crates/mako/src/transform.rs b/crates/mako/src/transform.rs index a2a97e8ef..f060046f0 100644 --- a/crates/mako/src/transform.rs +++ b/crates/mako/src/transform.rs @@ -179,7 +179,13 @@ fn transform_js( // preset-env and other folders must be after plugin transform // because plugin transform may inject some code that may need syntax transform - ast.body = folders.fold_module(ast.clone()).body; + let body = ast.body.take(); + let module = Module { + span: ast.span, + shebang: ast.shebang.clone(), + body, + }; + ast.body = folders.fold_module(module).body; // inject helpers must after decorators // since decorators will use helpers diff --git a/crates/mako/src/transform_in_generate.rs b/crates/mako/src/transform_in_generate.rs index 0b9bd844f..30354450e 100644 --- a/crates/mako/src/transform_in_generate.rs +++ b/crates/mako/src/transform_in_generate.rs @@ -120,17 +120,17 @@ pub fn transform_modules_in_thread( insert_swc_helper_replace(&mut resolved_deps, &context); let module = module_graph.get_module(&module_id).unwrap(); let info = module.info.as_ref().unwrap(); - let ast = &mut info.ast.clone(); + let ast = info.ast.clone(); let deps_to_replace = DependenciesToReplace { resolved: resolved_deps, missing: info.missing_deps.clone(), ignored: info.ignored_deps.clone(), }; - if let ModuleAst::Script(ast) = ast { + if let ModuleAst::Script(mut ast) = ast { let ret = transform_js_generate(TransformJsParam { module_id: &module.id, context: &context, - ast, + ast: &mut ast, dep_map: &deps_to_replace, async_deps: &async_deps, wrap_async: info.is_async && info.external.is_none(), @@ -143,7 +143,7 @@ pub fn transform_modules_in_thread( } else { Some(SwcHelpers::get_swc_helpers(&ast.ast, &context)) }; - Ok((module_id, ModuleAst::Script(ast.clone()), swc_helpers)) + Ok((module_id, ModuleAst::Script(ast), swc_helpers)) } Err(e) => Err(e), };