Skip to content

Commit

Permalink
fix(es/transforms): Add custom Sync + Send for the renamer (#5018)
Browse files Browse the repository at this point in the history
  • Loading branch information
kdy1 committed Jun 21, 2022
1 parent 0e99541 commit fd73895
Showing 1 changed file with 21 additions and 1 deletion.
22 changes: 21 additions & 1 deletion crates/swc_ecma_transforms_base/src/rename/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@ use swc_common::collections::AHashMap;
use swc_ecma_ast::*;
use swc_ecma_visit::{as_folder, noop_visit_mut_type, Fold, VisitMut, VisitMutWith, VisitWith};

#[cfg(feature = "concurrent-renamer")]
use self::renamer_concurrent::{Send, Sync};
#[cfg(not(feature = "concurrent-renamer"))]
use self::renamer_single::{Send, Sync};
use self::{
analyzer::Analyzer,
collector::{collect_decls, CustomBindingCollector, IdCollector},
Expand All @@ -19,7 +23,7 @@ mod collector;
mod eval;
mod ops;

pub trait Renamer: swc_common::sync::Send + swc_common::sync::Sync {
pub trait Renamer: Send + Sync {
/// Should reset `n` to 0 for each identifier?
const RESET_N: bool;

Expand Down Expand Up @@ -243,3 +247,19 @@ where
s.visit_mut_with(&mut rename_with_config(&map, self.config.clone()));
}
}

#[cfg(feature = "concurrent-renamer")]
mod renamer_concurrent {
pub use std::marker::{Send, Sync};
}

#[cfg(not(feature = "concurrent-renamer"))]
mod renamer_single {
/// Dummy trait because swc_common is in single thread mode.
pub trait Send {}
/// Dummy trait because swc_common is in single thread mode.
pub trait Sync {}

impl<T> Send for T where T: ?Sized {}
impl<T> Sync for T where T: ?Sized {}
}

1 comment on commit fd73895

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark

Benchmark suite Current: fd73895 Previous: eedcb11 Ratio
es/full/minify/libraries/antd 1722201457 ns/iter (± 29378899) 1610591092 ns/iter (± 7969039) 1.07
es/full/minify/libraries/d3 432234706 ns/iter (± 13611482) 389947963 ns/iter (± 3829376) 1.11
es/full/minify/libraries/echarts 1670693409 ns/iter (± 48664742) 1602862488 ns/iter (± 52402070) 1.04
es/full/minify/libraries/jquery 93748307 ns/iter (± 7275269) 83766121 ns/iter (± 823295) 1.12
es/full/minify/libraries/lodash 122099433 ns/iter (± 4598892) 111911219 ns/iter (± 1244061) 1.09
es/full/minify/libraries/moment 52190763 ns/iter (± 997997) 49652162 ns/iter (± 1159373) 1.05
es/full/minify/libraries/react 17271603 ns/iter (± 277058) 17200404 ns/iter (± 704259) 1.00
es/full/minify/libraries/terser 610229525 ns/iter (± 10711538) 586687371 ns/iter (± 12565869) 1.04
es/full/minify/libraries/three 565738433 ns/iter (± 14450860) 602029008 ns/iter (± 88543988) 0.94
es/full/minify/libraries/typescript 3531752680 ns/iter (± 48553770) 3701825318 ns/iter (± 85130737) 0.95
es/full/minify/libraries/victory 715409073 ns/iter (± 11668534) 906457458 ns/iter (± 281965904) 0.79
es/full/minify/libraries/vue 152493357 ns/iter (± 12340751) 137698926 ns/iter (± 1844774) 1.11
es/full/codegen/es3 31948 ns/iter (± 846) 32116 ns/iter (± 468) 0.99
es/full/codegen/es5 32082 ns/iter (± 950) 32270 ns/iter (± 491) 0.99
es/full/codegen/es2015 32091 ns/iter (± 3492) 32165 ns/iter (± 1141) 1.00
es/full/codegen/es2016 32209 ns/iter (± 649) 32170 ns/iter (± 1730) 1.00
es/full/codegen/es2017 32097 ns/iter (± 572) 32317 ns/iter (± 1383) 0.99
es/full/codegen/es2018 32076 ns/iter (± 667) 32155 ns/iter (± 632) 1.00
es/full/codegen/es2019 32005 ns/iter (± 639) 32227 ns/iter (± 982) 0.99
es/full/codegen/es2020 31951 ns/iter (± 696) 32076 ns/iter (± 1573) 1.00
es/full/all/es3 184897655 ns/iter (± 6609962) 185395547 ns/iter (± 6157185) 1.00
es/full/all/es5 176175604 ns/iter (± 9226067) 174590481 ns/iter (± 4641308) 1.01
es/full/all/es2015 141187979 ns/iter (± 4148023) 141777702 ns/iter (± 5214036) 1.00
es/full/all/es2016 139207696 ns/iter (± 3890810) 137340671 ns/iter (± 1687550) 1.01
es/full/all/es2017 138898106 ns/iter (± 3217956) 136730720 ns/iter (± 2136083) 1.02
es/full/all/es2018 137287596 ns/iter (± 3681922) 135581994 ns/iter (± 2378652) 1.01
es/full/all/es2019 138247359 ns/iter (± 4164279) 135018179 ns/iter (± 1876917) 1.02
es/full/all/es2020 130564266 ns/iter (± 4247863) 130163784 ns/iter (± 1787914) 1.00
es/full/parser 712483 ns/iter (± 20912) 692251 ns/iter (± 13514) 1.03
es/full/base/fixer 29478 ns/iter (± 865) 28254 ns/iter (± 198) 1.04
es/full/base/resolver_and_hygiene 87527 ns/iter (± 1660) 85799 ns/iter (± 2286) 1.02
serialization of ast node 208 ns/iter (± 2) 202 ns/iter (± 4) 1.03
serialization of serde 219 ns/iter (± 4) 213 ns/iter (± 16) 1.03

This comment was automatically generated by workflow using github-action-benchmark.

Please sign in to comment.