Skip to content

Commit

Permalink
Optimize using swc_allocator
Browse files Browse the repository at this point in the history
  • Loading branch information
kdy1 committed Jul 19, 2024
1 parent d3d8645 commit 513f110
Show file tree
Hide file tree
Showing 9 changed files with 15 additions and 28 deletions.
1 change: 0 additions & 1 deletion crates/swc_ecma_minifier/src/compress/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -235,7 +235,6 @@ impl Compressor<'_> {

let mut visitor = pure_optimizer(
self.options,
None,
self.marks,
PureOptimizerConfig {
enable_join_vars: self.pass > 1,
Expand Down
7 changes: 2 additions & 5 deletions crates/swc_ecma_minifier/src/compress/optimize/evaluate.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use swc_ecma_ast::*;
use swc_ecma_utils::{ExprExt, Value::Known};

use super::Optimizer;
use crate::{compress::util::eval_as_number, maybe_par, DISABLE_BUGGY_PASSES};
use crate::{compress::util::eval_as_number, DISABLE_BUGGY_PASSES};

/// Methods related to the option `evaluate`.
impl Optimizer<'_> {
Expand Down Expand Up @@ -413,10 +413,7 @@ impl Optimizer<'_> {
(FpCategory::Zero, FpCategory::Zero) => {
// If a variable named `NaN` is in scope, don't convert e into NaN.
let data = &self.data.vars;
if maybe_par!(
data.iter().any(|(name, v)| v.declared && name.0 == "NaN"),
*crate::LIGHT_TASK_PARALLELS
) {
if data.iter().any(|(name, v)| v.declared && name.0 == "NaN") {
return;
}

Expand Down
14 changes: 8 additions & 6 deletions crates/swc_ecma_minifier/src/compress/optimize/iife.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
use std::{collections::HashMap, mem::swap};
use std::mem::swap;

use rustc_hash::FxHashMap;
use swc_common::{pass::Either, util::take::Take, Spanned, DUMMY_SP};
use swc_ecma_ast::*;
use swc_ecma_utils::{contains_arguments, contains_this_expr, find_pat_ids, ExprFactory};
Expand Down Expand Up @@ -190,7 +189,7 @@ impl Optimizer<'_> {

let params = find_params(callee);
if let Some(mut params) = params {
let mut vars = HashMap::default();
let mut vars = swc_allocator::collections::FxHashMap::default();
// We check for parameter and argument
for (idx, param) in params.iter_mut().enumerate() {
match &mut **param {
Expand Down Expand Up @@ -406,8 +405,11 @@ impl Optimizer<'_> {
}

#[cfg_attr(feature = "debug", tracing::instrument(skip_all))]
pub(super) fn inline_vars_in_node<N>(&mut self, n: &mut N, mut vars: FxHashMap<Id, Box<Expr>>)
where
pub(super) fn inline_vars_in_node<N>(
&mut self,
n: &mut N,
mut vars: swc_allocator::collections::FxHashMap<Id, Box<Expr>>,
) where
N: for<'aa> VisitMutWith<NormalMultiReplacer<'aa>>,
{
trace_op!("inline: inline_vars_in_node");
Expand Down Expand Up @@ -964,7 +966,7 @@ impl Optimizer<'_> {
Stmt::Decl(Decl::Var(ref mut var)) => {
for decl in &mut var.decls {
if decl.init.is_some() {
let ids = find_pat_ids(decl);
let ids: Vec<Id> = find_pat_ids(decl);

for id in ids {
if let Some(usage) = self.data.vars.get_mut(&id) {
Expand Down
2 changes: 1 addition & 1 deletion crates/swc_ecma_minifier/src/compress/optimize/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -244,7 +244,7 @@ struct Vars {
///
/// We use this to distinguish [Callee::Expr] from other [Expr]s.
simple_functions: FxHashMap<Id, Box<Expr>>,
vars_for_inlining: FxHashMap<Id, Box<Expr>>,
vars_for_inlining: swc_allocator::collections::FxHashMap<Id, Box<Expr>>,

/// Variables which should be removed by [Finalizer] because of the order of
/// visit.
Expand Down
4 changes: 2 additions & 2 deletions crates/swc_ecma_minifier/src/compress/optimize/util.rs
Original file line number Diff line number Diff line change
Expand Up @@ -451,13 +451,13 @@ impl VisitMut for Finalizer<'_> {
}

pub(crate) struct NormalMultiReplacer<'a> {
pub vars: &'a mut FxHashMap<Id, Box<Expr>>,
pub vars: &'a mut swc_allocator::collections::FxHashMap<Id, Box<Expr>>,
pub changed: bool,
}

impl<'a> NormalMultiReplacer<'a> {
/// `worked` will be changed to `true` if any replacement is done
pub fn new(vars: &'a mut FxHashMap<Id, Box<Expr>>) -> Self {
pub fn new(vars: &'a mut swc_allocator::collections::FxHashMap<Id, Box<Expr>>) -> Self {
NormalMultiReplacer {
vars,
changed: false,
Expand Down
9 changes: 1 addition & 8 deletions crates/swc_ecma_minifier/src/compress/pure/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,7 @@ use self::{ctx::Ctx, misc::DropOpts};
use super::util::is_pure_undefined_or_null;
#[cfg(feature = "debug")]
use crate::debug::dump;
use crate::{
debug::AssertValid, maybe_par, option::CompressOptions, program_data::ProgramData,
util::ModuleItemExt,
};
use crate::{debug::AssertValid, maybe_par, option::CompressOptions, util::ModuleItemExt};

mod arrows;
mod bools;
Expand Down Expand Up @@ -52,7 +49,6 @@ pub(crate) struct PureOptimizerConfig {
#[allow(clippy::needless_lifetimes)]
pub(crate) fn pure_optimizer<'a>(
options: &'a CompressOptions,
data: Option<&'a ProgramData>,
marks: Marks,
config: PureOptimizerConfig,
) -> impl 'a + VisitMut + Repeated {
Expand All @@ -64,7 +60,6 @@ pub(crate) fn pure_optimizer<'a>(
unresolved_ctxt: SyntaxContext::empty().apply_mark(marks.unresolved_mark),
is_unresolved_ref_safe: false,
},
data,
ctx: Default::default(),
changed: Default::default(),
}
Expand All @@ -76,8 +71,6 @@ struct Pure<'a> {
marks: Marks,
expr_ctx: ExprCtx,

#[allow(unused)]
data: Option<&'a ProgramData>,
ctx: Ctx,
changed: bool,
}
Expand Down
1 change: 0 additions & 1 deletion crates/swc_ecma_minifier/src/eval.rs
Original file line number Diff line number Diff line change
Expand Up @@ -242,7 +242,6 @@ impl Evaluator {
{
e.visit_mut_with(&mut pure_optimizer(
&Default::default(),
None,
self.marks,
PureOptimizerConfig {
enable_join_vars: false,
Expand Down
1 change: 0 additions & 1 deletion crates/swc_ecma_minifier/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,6 @@ pub fn optimize(

let mut v = pure_optimizer(
c,
None,
marks,
PureOptimizerConfig {
force_str_for_tpl: Minification.force_str_for_tpl(),
Expand Down
4 changes: 1 addition & 3 deletions crates/swc_ecma_minifier/src/program_data.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
use std::collections::hash_map::Entry;

use indexmap::IndexSet;
use rustc_hash::FxHashMap;
use swc_allocator::collections::{hash_map::Entry, FxHashMap};
use swc_atoms::JsWord;
use swc_common::{
collections::{AHashMap, ARandomState},
Expand Down

0 comments on commit 513f110

Please sign in to comment.