perf(es/minifier): Add some fast-path to the MultiReplacer (#4408)

This commit is contained in:
Donny/강동윤 2022-04-23 19:53:21 +09:00 committed by GitHub
parent 5a8250610a
commit 4c9e5c01ef
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 24 additions and 15 deletions

View File

@ -23,8 +23,8 @@ fn main() {
testing::run_test2(false, |cm, handler| {
GLOBALS.with(|globals| {
files
.into_par_iter()
let _ = files
.into_iter()
.map(|path| -> Result<_> {
GLOBALS.set(globals, || {
let fm = cm.load_file(&path).expect("failed to load file");

View File

@ -8,4 +8,4 @@
export RUST_LOG=off
cargo profile instruments -t time --example minify-all --release -- $@
cargo profile instruments -t time --example minify-all --features swc_common/perf --release -- $@

View File

@ -250,8 +250,15 @@ impl VisitMut for MultiReplacer<'_> {
}
fn visit_mut_expr(&mut self, e: &mut Expr) {
if self.vars.is_empty() {
return;
}
e.visit_mut_children_with(self);
if self.vars.is_empty() {
return;
}
if matches!(self.mode, MultiReplacerMode::Normal) {
if let Expr::Ident(i) = e {
if let Some(new) = self.var(&i.to_id()) {
@ -286,6 +293,7 @@ impl VisitMut for MultiReplacer<'_> {
fn visit_mut_prop(&mut self, p: &mut Prop) {
p.visit_mut_children_with(self);
if matches!(self.mode, MultiReplacerMode::Normal) {
if let Prop::Shorthand(i) = p {
if let Some(value) = self.var(&i.to_id()) {
debug!("multi-replacer: Replaced `{}` as shorthand", i);
@ -302,6 +310,7 @@ impl VisitMut for MultiReplacer<'_> {
}
}
}
}
}
pub(crate) fn replace_id_with_expr<N>(node: &mut N, from: Id, to: Box<Expr>) -> Option<Box<Expr>>