Skip to content

Commit

Permalink
fix(es/minifier): Don't create a numeric literal with NaN value (#6166
Browse files Browse the repository at this point in the history
)
  • Loading branch information
kdy1 committed Oct 15, 2022
1 parent 23e30fd commit 2e153e5
Showing 1 changed file with 14 additions and 5 deletions.
19 changes: 14 additions & 5 deletions crates/swc_ecma_transforms_optimization/src/simplify/expr/mod.rs
Expand Up @@ -663,13 +663,22 @@ impl SimplifyExpr {
{
if *left_op == *op {
if let Known(value) = self.perform_arithmetic_op(*op, left_rhs, right) {
let value_expr = if !value.is_nan() {
Expr::Lit(Lit::Num(Number {
value,
span: *span,
raw: None,
}))
} else {
Expr::Ident(Ident::new(
js_word!("NaN"),
span.with_ctxt(self.expr_ctx.unresolved_ctxt),
))
};

self.changed = true;
*left = left_lhs.take();
*right = Box::new(Expr::Lit(Lit::Num(Number {
value,
span: *span,
raw: None,
})))
*right = Box::new(value_expr);
}
}
}
Expand Down

1 comment on commit 2e153e5

@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: 2e153e5 Previous: aec5cda Ratio
es/full/minify/libraries/antd 1797409107 ns/iter (± 49007393) 1796779296 ns/iter (± 27690436) 1.00
es/full/minify/libraries/d3 413169529 ns/iter (± 9976110) 371398457 ns/iter (± 11683458) 1.11
es/full/minify/libraries/echarts 1529898179 ns/iter (± 36002994) 1525416613 ns/iter (± 13829625) 1.00
es/full/minify/libraries/jquery 108542729 ns/iter (± 4329298) 99955681 ns/iter (± 3165124) 1.09
es/full/minify/libraries/lodash 107927513 ns/iter (± 3123179) 109311782 ns/iter (± 3433897) 0.99
es/full/minify/libraries/moment 55948673 ns/iter (± 2308845) 57023419 ns/iter (± 1278245) 0.98
es/full/minify/libraries/react 19134292 ns/iter (± 486417) 20284427 ns/iter (± 752484) 0.94
es/full/minify/libraries/terser 286109409 ns/iter (± 7938508) 290868163 ns/iter (± 7579934) 0.98
es/full/minify/libraries/three 526855657 ns/iter (± 11754590) 547673794 ns/iter (± 12193168) 0.96
es/full/minify/libraries/typescript 3298707713 ns/iter (± 30973926) 3354599711 ns/iter (± 11333904) 0.98
es/full/minify/libraries/victory 777357035 ns/iter (± 9794216) 834606891 ns/iter (± 17071017) 0.93
es/full/minify/libraries/vue 136510506 ns/iter (± 4598483) 161126865 ns/iter (± 6154641) 0.85
es/full/codegen/es3 32192 ns/iter (± 958) 34658 ns/iter (± 3335) 0.93
es/full/codegen/es5 32293 ns/iter (± 931) 34903 ns/iter (± 2088) 0.93
es/full/codegen/es2015 32065 ns/iter (± 621) 35994 ns/iter (± 3098) 0.89
es/full/codegen/es2016 32793 ns/iter (± 1003) 34550 ns/iter (± 1766) 0.95
es/full/codegen/es2017 32886 ns/iter (± 611) 35093 ns/iter (± 2447) 0.94
es/full/codegen/es2018 32979 ns/iter (± 485) 34783 ns/iter (± 2754) 0.95
es/full/codegen/es2019 32970 ns/iter (± 772) 33709 ns/iter (± 4616) 0.98
es/full/codegen/es2020 32992 ns/iter (± 1672) 34207 ns/iter (± 2743) 0.96
es/full/all/es3 188002477 ns/iter (± 5590998) 197886393 ns/iter (± 10333074) 0.95
es/full/all/es5 178209222 ns/iter (± 5558246) 204744908 ns/iter (± 24610933) 0.87
es/full/all/es2015 143310856 ns/iter (± 8860249) 152371572 ns/iter (± 10512176) 0.94
es/full/all/es2016 142373765 ns/iter (± 2839372) 148635311 ns/iter (± 9940440) 0.96
es/full/all/es2017 142714710 ns/iter (± 4076753) 144970310 ns/iter (± 6518546) 0.98
es/full/all/es2018 141102069 ns/iter (± 3747672) 141979377 ns/iter (± 5151504) 0.99
es/full/all/es2019 139808560 ns/iter (± 2931256) 140785335 ns/iter (± 4042387) 0.99
es/full/all/es2020 134647295 ns/iter (± 2408892) 135544824 ns/iter (± 4708792) 0.99
es/full/parser 719814 ns/iter (± 17073) 725112 ns/iter (± 59993) 0.99
es/full/base/fixer 26199 ns/iter (± 484) 26761 ns/iter (± 1917) 0.98
es/full/base/resolver_and_hygiene 91972 ns/iter (± 1553) 93787 ns/iter (± 5869) 0.98
serialization of ast node 205 ns/iter (± 3) 211 ns/iter (± 26) 0.97
serialization of serde 208 ns/iter (± 3) 218 ns/iter (± 34) 0.95

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

Please sign in to comment.