Skip to content

Commit

Permalink
fix(es/minifier): Fix toFixed, toPrecision, toExponential and `…
Browse files Browse the repository at this point in the history
…toString` of Number (#6960)
  • Loading branch information
magic-akari committed Feb 19, 2023
1 parent 6f18f23 commit 9382bda
Show file tree
Hide file tree
Showing 18 changed files with 1,373 additions and 44 deletions.
1 change: 1 addition & 0 deletions .prettierignore
Expand Up @@ -19,6 +19,7 @@ crates/swc_css_parser/tests/
crates/swc_css_prefixer/tests/
crates/swc_ecma_codegen/tests/
crates/swc_ecma_lints/tests/
crates/swc_ecma_minifier/tests/
crates/swc_ecma_parser/tests/
crates/swc_estree_compat/tests/
crates/swc_html_codegen/tests/
Expand Down
7 changes: 7 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Expand Up @@ -2,4 +2,3 @@
import _class_call_check from "@swc/helpers/src/_class_call_check.mjs";
import _sliced_to_array from "@swc/helpers/src/_sliced_to_array.mjs";
import _to_array from "@swc/helpers/src/_to_array.mjs";
0..toExponential();
@@ -1,2 +1,2 @@
//// [numberPropertyAccess.ts]
1..toExponential(), 1..hasOwnProperty("toFixed"), 1..toExponential(), 1..hasOwnProperty("toFixed");
1..hasOwnProperty("toFixed"), 1..hasOwnProperty("toFixed");
1 change: 1 addition & 0 deletions crates/swc_ecma_minifier/Cargo.toml
Expand Up @@ -42,6 +42,7 @@ radix_fmt = "=1.0.0"
rayon = {version = "1.5.1", optional = true}
regex = "1.5.3"
rustc-hash = "1.1.0"
ryu-js = "0.2.2"
serde = {version = "1.0.118", features = ["derive"]}
serde_json = "1.0.61"
swc_atoms = {version = "0.4.36", path = "../swc_atoms"}
Expand Down

1 comment on commit 9382bda

@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: 9382bda Previous: d5c0dec Ratio
es/full/bugs-1 280393 ns/iter (± 13426) 303078 ns/iter (± 4187) 0.93
es/full/minify/libraries/antd 1639853169 ns/iter (± 24451020) 1710670510 ns/iter (± 17402912) 0.96
es/full/minify/libraries/d3 294971373 ns/iter (± 8661132) 310988484 ns/iter (± 11033578) 0.95
es/full/minify/libraries/echarts 1222470542 ns/iter (± 12481260) 1312439107 ns/iter (± 17620586) 0.93
es/full/minify/libraries/jquery 87647235 ns/iter (± 946898) 92921533 ns/iter (± 1448974) 0.94
es/full/minify/libraries/lodash 104979648 ns/iter (± 877836) 106851467 ns/iter (± 1154588) 0.98
es/full/minify/libraries/moment 52004448 ns/iter (± 839339) 53051339 ns/iter (± 512568) 0.98
es/full/minify/libraries/react 18988277 ns/iter (± 135591) 19333617 ns/iter (± 150866) 0.98
es/full/minify/libraries/terser 240040994 ns/iter (± 3731933) 250794374 ns/iter (± 3586543) 0.96
es/full/minify/libraries/three 429308526 ns/iter (± 7302405) 459498007 ns/iter (± 5110015) 0.93
es/full/minify/libraries/typescript 3091179067 ns/iter (± 25427680) 3228487524 ns/iter (± 38146836) 0.96
es/full/minify/libraries/victory 627840067 ns/iter (± 9801201) 700558369 ns/iter (± 20708708) 0.90
es/full/minify/libraries/vue 127866355 ns/iter (± 6744870) 135551812 ns/iter (± 2532186) 0.94
es/full/codegen/es3 29640 ns/iter (± 130) 26215 ns/iter (± 63) 1.13
es/full/codegen/es5 29452 ns/iter (± 315) 26231 ns/iter (± 100) 1.12
es/full/codegen/es2015 28904 ns/iter (± 313) 26261 ns/iter (± 147) 1.10
es/full/codegen/es2016 29346 ns/iter (± 443) 26329 ns/iter (± 110) 1.11
es/full/codegen/es2017 29201 ns/iter (± 430) 26350 ns/iter (± 68) 1.11
es/full/codegen/es2018 28752 ns/iter (± 373) 26289 ns/iter (± 77) 1.09
es/full/codegen/es2019 28932 ns/iter (± 434) 26169 ns/iter (± 90) 1.11
es/full/codegen/es2020 29137 ns/iter (± 249) 26176 ns/iter (± 85) 1.11
es/full/all/es3 171590654 ns/iter (± 2209958) 173690797 ns/iter (± 2046931) 0.99
es/full/all/es5 163764363 ns/iter (± 4481263) 165691754 ns/iter (± 2872002) 0.99
es/full/all/es2015 123425918 ns/iter (± 1049583) 126618051 ns/iter (± 1900846) 0.97
es/full/all/es2016 122270771 ns/iter (± 1008394) 125799000 ns/iter (± 1318679) 0.97
es/full/all/es2017 120961143 ns/iter (± 873639) 125356069 ns/iter (± 1487267) 0.96
es/full/all/es2018 118469252 ns/iter (± 677215) 121262109 ns/iter (± 701742) 0.98
es/full/all/es2019 117419970 ns/iter (± 1154120) 120478110 ns/iter (± 942592) 0.97
es/full/all/es2020 113577981 ns/iter (± 1005390) 115375502 ns/iter (± 881999) 0.98
es/full/parser 512711 ns/iter (± 6440) 543921 ns/iter (± 5288) 0.94
es/full/base/fixer 21235 ns/iter (± 187) 22523 ns/iter (± 112) 0.94
es/full/base/resolver_and_hygiene 79289 ns/iter (± 291) 81594 ns/iter (± 325) 0.97
serialization of ast node 118 ns/iter (± 1) 118 ns/iter (± 1) 1
serialization of serde 123 ns/iter (± 0) 124 ns/iter (± 0) 0.99
css/minify/libraries/bootstrap 26685509 ns/iter (± 224943) 27609438 ns/iter (± 120936) 0.97
css/visitor/compare/clone 2025270 ns/iter (± 18966) 2047822 ns/iter (± 6457) 0.99
css/visitor/compare/visit_mut_span 2195767 ns/iter (± 17795) 2275879 ns/iter (± 6192) 0.96
css/visitor/compare/visit_mut_span_panic 2246400 ns/iter (± 14124) 2306686 ns/iter (± 4756) 0.97
css/visitor/compare/fold_span 2939148 ns/iter (± 36682) 3023840 ns/iter (± 21131) 0.97
css/visitor/compare/fold_span_panic 3055488 ns/iter (± 18692) 3169422 ns/iter (± 18186) 0.96
css/lexer/bootstrap_5_1_3 5106876 ns/iter (± 32913) 5201590 ns/iter (± 5802) 0.98
css/lexer/foundation_6_7_4 4242575 ns/iter (± 26447) 4378104 ns/iter (± 5280) 0.97
css/lexer/tailwind_3_1_1 803234 ns/iter (± 5656) 832164 ns/iter (± 1309) 0.97
css/parser/bootstrap_5_1_3 21008764 ns/iter (± 184063) 21626242 ns/iter (± 28937) 0.97
css/parser/foundation_6_7_4 16849078 ns/iter (± 123642) 17315071 ns/iter (± 130719) 0.97
css/parser/tailwind_3_1_1 3211308 ns/iter (± 18686) 3281887 ns/iter (± 23244) 0.98
es/codegen/colors 339805 ns/iter (± 193363) 329838 ns/iter (± 187426) 1.03
es/codegen/large 1181821 ns/iter (± 604273) 1207254 ns/iter (± 625572) 0.98
es/codegen/with-parser/colors 46771 ns/iter (± 329) 48606 ns/iter (± 537) 0.96
es/codegen/with-parser/large 520552 ns/iter (± 4721) 533201 ns/iter (± 5700) 0.98
es/minify/libraries/antd 1395847354 ns/iter (± 77958061) 1425903801 ns/iter (± 16673955) 0.98
es/minify/libraries/d3 239215303 ns/iter (± 2418305) 244491365 ns/iter (± 7644360) 0.98
es/minify/libraries/echarts 1023472168 ns/iter (± 13771574) 1024926743 ns/iter (± 14591763) 1.00
es/minify/libraries/jquery 75629308 ns/iter (± 583029) 76761921 ns/iter (± 1037403) 0.99
es/minify/libraries/lodash 91735754 ns/iter (± 1056589) 92933282 ns/iter (± 1095787) 0.99
es/minify/libraries/moment 44966538 ns/iter (± 384287) 44830666 ns/iter (± 912367) 1.00
es/minify/libraries/react 16791192 ns/iter (± 79499) 16867298 ns/iter (± 178827) 1.00
es/minify/libraries/terser 204037117 ns/iter (± 2214088) 202997368 ns/iter (± 3208297) 1.01
es/minify/libraries/three 352526664 ns/iter (± 7303809) 342242868 ns/iter (± 9310654) 1.03
es/minify/libraries/typescript 2623970447 ns/iter (± 14500562) 2664191638 ns/iter (± 14261537) 0.98
es/minify/libraries/victory 539324024 ns/iter (± 9965231) 547913292 ns/iter (± 18044936) 0.98
es/minify/libraries/vue 112196651 ns/iter (± 1334701) 113561775 ns/iter (± 1648183) 0.99
es/visitor/compare/clone 2352364 ns/iter (± 25960) 2385274 ns/iter (± 40953) 0.99
es/visitor/compare/visit_mut_span 2752071 ns/iter (± 17184) 2774397 ns/iter (± 29367) 0.99
es/visitor/compare/visit_mut_span_panic 2798927 ns/iter (± 30317) 2799874 ns/iter (± 20033) 1.00
es/visitor/compare/fold_span 3858466 ns/iter (± 36442) 3891739 ns/iter (± 34022) 0.99
es/visitor/compare/fold_span_panic 3983078 ns/iter (± 20624) 3966753 ns/iter (± 21506) 1.00
es/lexer/colors 16819 ns/iter (± 148) 16939 ns/iter (± 102) 0.99
es/lexer/angular 8018280 ns/iter (± 55331) 8054561 ns/iter (± 36832) 1.00
es/lexer/backbone 1042957 ns/iter (± 6110) 1052236 ns/iter (± 8581) 0.99
es/lexer/jquery 5767895 ns/iter (± 43855) 5895192 ns/iter (± 64315) 0.98
es/lexer/jquery mobile 8955751 ns/iter (± 81988) 8975272 ns/iter (± 85418) 1.00
es/lexer/mootools 4525223 ns/iter (± 31686) 4535695 ns/iter (± 35160) 1.00
es/lexer/underscore 874003 ns/iter (± 5064) 871061 ns/iter (± 4506) 1.00
es/lexer/three 27257796 ns/iter (± 299914) 27144363 ns/iter (± 268958) 1.00
es/lexer/yui 4919032 ns/iter (± 41732) 4938211 ns/iter (± 26524) 1.00
es/parser/colors 29527 ns/iter (± 305) 29637 ns/iter (± 210) 1.00
es/parser/angular 15160732 ns/iter (± 231378) 15190931 ns/iter (± 249982) 1.00
es/parser/backbone 2291605 ns/iter (± 17905) 2273990 ns/iter (± 21321) 1.01
es/parser/jquery 12275441 ns/iter (± 96801) 12202072 ns/iter (± 168640) 1.01
es/parser/jquery mobile 19295244 ns/iter (± 352291) 19262064 ns/iter (± 332534) 1.00
es/parser/mootools 9395646 ns/iter (± 102622) 9376373 ns/iter (± 158820) 1.00
es/parser/underscore 1925888 ns/iter (± 18660) 1952648 ns/iter (± 6317) 0.99
es/parser/three 53975889 ns/iter (± 1069979) 55001893 ns/iter (± 1594177) 0.98
es/parser/yui 9323782 ns/iter (± 82583) 9330426 ns/iter (± 109553) 1.00
es/preset-env/usage/builtin_type 135717 ns/iter (± 30196) 135811 ns/iter (± 32918) 1.00
es/preset-env/usage/property 20811 ns/iter (± 66) 20443 ns/iter (± 182) 1.02
es/resolver/typescript 117774211 ns/iter (± 5019077) 117170211 ns/iter (± 3101767) 1.01
es/fixer/typescript 92058418 ns/iter (± 1695308) 94111934 ns/iter (± 993485) 0.98
es/hygiene/typescript 194332573 ns/iter (± 1683096) 198941408 ns/iter (± 1580676) 0.98
es/resolver_with_hygiene/typescript 330876120 ns/iter (± 3049389) 325923543 ns/iter (± 2431370) 1.02
es/visitor/base-perf/module_clone 74071 ns/iter (± 1134) 75018 ns/iter (± 1541) 0.99
es/visitor/base-perf/fold_empty 84270 ns/iter (± 1460) 83458 ns/iter (± 2458) 1.01
es/visitor/base-perf/fold_noop_impl_all 83922 ns/iter (± 1546) 82724 ns/iter (± 2188) 1.01
es/visitor/base-perf/fold_noop_impl_vec 83700 ns/iter (± 2098) 84214 ns/iter (± 1748) 0.99
es/visitor/base-perf/boxing_boxed_clone 54 ns/iter (± 0) 55 ns/iter (± 0) 0.98
es/visitor/base-perf/boxing_unboxed_clone 58 ns/iter (± 0) 61 ns/iter (± 0) 0.95
es/visitor/base-perf/boxing_boxed 100 ns/iter (± 0) 106 ns/iter (± 0) 0.94
es/visitor/base-perf/boxing_unboxed 105 ns/iter (± 0) 107 ns/iter (± 1) 0.98
es/visitor/base-perf/visit_contains_this 3383 ns/iter (± 67) 3430 ns/iter (± 74) 0.99
es/base/parallel/resolver/typescript 5406524445 ns/iter (± 560006636) 5183659927 ns/iter (± 498070699) 1.04
es/base/parallel/hygiene/typescript 2360685598 ns/iter (± 34141874) 2366992167 ns/iter (± 22737073) 1.00
misc/visitors/time-complexity/time 5 92 ns/iter (± 0) 93 ns/iter (± 1) 0.99
misc/visitors/time-complexity/time 10 321 ns/iter (± 1) 317 ns/iter (± 2) 1.01
misc/visitors/time-complexity/time 15 634 ns/iter (± 7) 630 ns/iter (± 5) 1.01
misc/visitors/time-complexity/time 20 1172 ns/iter (± 9) 1182 ns/iter (± 9) 0.99
misc/visitors/time-complexity/time 40 5968 ns/iter (± 28) 6084 ns/iter (± 65) 0.98
misc/visitors/time-complexity/time 60 15007 ns/iter (± 149) 15246 ns/iter (± 128) 0.98
es/full-target/es2016 184485 ns/iter (± 1841) 184625 ns/iter (± 1801) 1.00
es/full-target/es2017 177072 ns/iter (± 1241) 179367 ns/iter (± 1495) 0.99
es/full-target/es2018 166296 ns/iter (± 1668) 170446 ns/iter (± 2439) 0.98
es2020_nullish_coalescing 64308 ns/iter (± 527) 65221 ns/iter (± 707) 0.99
es2020_optional_chaining 89894 ns/iter (± 5495) 92892 ns/iter (± 888) 0.97
es2022_class_properties 89340 ns/iter (± 1004) 90728 ns/iter (± 1265) 0.98
es2018_object_rest_spread 68527 ns/iter (± 761) 69214 ns/iter (± 376) 0.99
es2019_optional_catch_binding 58756 ns/iter (± 511) 59054 ns/iter (± 453) 0.99
es2017_async_to_generator 58785 ns/iter (± 561) 59455 ns/iter (± 576) 0.99
es2016_exponentiation 61700 ns/iter (± 626) 63224 ns/iter (± 548) 0.98
es2015_arrow 66332 ns/iter (± 621) 68915 ns/iter (± 540) 0.96
es2015_block_scoped_fn 62754 ns/iter (± 443) 64404 ns/iter (± 927) 0.97
es2015_block_scoping 147879 ns/iter (± 7729) 145502 ns/iter (± 8970) 1.02
es2015_classes 109569 ns/iter (± 500) 113165 ns/iter (± 777) 0.97
es2015_computed_props 57519 ns/iter (± 343) 59145 ns/iter (± 385) 0.97
es2015_destructuring 109831 ns/iter (± 790) 113276 ns/iter (± 693) 0.97
es2015_duplicate_keys 61002 ns/iter (± 284) 61188 ns/iter (± 381) 1.00
es2015_parameters 75263 ns/iter (± 726) 76786 ns/iter (± 772) 0.98
es2015_fn_name 62546 ns/iter (± 572) 63841 ns/iter (± 584) 0.98
es2015_for_of 61049 ns/iter (± 381) 63643 ns/iter (± 712) 0.96
es2015_instanceof 59381 ns/iter (± 417) 60195 ns/iter (± 400) 0.99
es2015_shorthand_property 57976 ns/iter (± 623) 58916 ns/iter (± 383) 0.98
es2015_spread 57816 ns/iter (± 492) 58273 ns/iter (± 490) 0.99
es2015_sticky_regex 59073 ns/iter (± 458) 59805 ns/iter (± 858) 0.99
es2015_typeof_symbol 59242 ns/iter (± 441) 60040 ns/iter (± 522) 0.99
es/transform/baseline/base 48821 ns/iter (± 538) 49631 ns/iter (± 255) 0.98
es/transform/baseline/common_reserved_word 59676 ns/iter (± 560) 60621 ns/iter (± 578) 0.98
es/transform/baseline/common_typescript 160842 ns/iter (± 2582) 137680 ns/iter (± 1278) 1.17
es/target/es3 161548 ns/iter (± 2293) 165138 ns/iter (± 1596) 0.98
es/target/es2015 585859 ns/iter (± 4126) 607002 ns/iter (± 15607) 0.97
es/target/es2016 61332 ns/iter (± 421) 62584 ns/iter (± 516) 0.98
es/target/es2017 58470 ns/iter (± 287) 60377 ns/iter (± 369) 0.97
es/target/es2018 76975 ns/iter (± 886) 78513 ns/iter (± 384) 0.98
es/target/es2020 126558 ns/iter (± 1386) 129216 ns/iter (± 1037) 0.98
babelify-only 663588 ns/iter (± 5206) 652795 ns/iter (± 5034) 1.02
parse_and_babelify_angular 42063209 ns/iter (± 791738) 43678131 ns/iter (± 512979) 0.96
parse_and_babelify_backbone 5351799 ns/iter (± 76313) 5294100 ns/iter (± 56275) 1.01
parse_and_babelify_jquery 31132142 ns/iter (± 535090) 31009931 ns/iter (± 328212) 1.00
parse_and_babelify_jquery_mobile 54327548 ns/iter (± 556619) 53852045 ns/iter (± 570446) 1.01
parse_and_babelify_mootools 31527032 ns/iter (± 617618) 31184525 ns/iter (± 601692) 1.01
parse_and_babelify_underscore 4318676 ns/iter (± 34487) 4304265 ns/iter (± 35429) 1.00
parse_and_babelify_yui 31531769 ns/iter (± 689618) 30890604 ns/iter (± 374200) 1.02
html/minify/document/css_spec 40741489 ns/iter (± 658754) 40836974 ns/iter (± 575584) 1.00
html/minify/document/github 17091511 ns/iter (± 202532) 16994806 ns/iter (± 151341) 1.01
html/minify/document/stackoverflow 15457041 ns/iter (± 147473) 15079089 ns/iter (± 153471) 1.03
html/minify/document_fragment/css_spec 38498294 ns/iter (± 690680) 37730120 ns/iter (± 212913) 1.02
html/minify/document_fragment/github 16650108 ns/iter (± 182068) 16153761 ns/iter (± 69184) 1.03
html/minify/document_fragment/stackoverflow 14857611 ns/iter (± 106769) 14616615 ns/iter (± 86464) 1.02
html/document/visitor/compare/clone 332987 ns/iter (± 3114) 338063 ns/iter (± 4891) 0.98
html/document/visitor/compare/visit_mut_span 356775 ns/iter (± 2421) 367003 ns/iter (± 3894) 0.97
html/document/visitor/compare/visit_mut_span_panic 366668 ns/iter (± 4324) 362877 ns/iter (± 1907) 1.01
html/document/visitor/compare/fold_span 399964 ns/iter (± 1975) 396339 ns/iter (± 3497) 1.01
html/document/visitor/compare/fold_span_panic 453245 ns/iter (± 4015) 454331 ns/iter (± 4173) 1.00
html/document_fragment/visitor/compare/clone 328521 ns/iter (± 1976) 332206 ns/iter (± 2608) 0.99
html/document_fragment/visitor/compare/visit_mut_span 358779 ns/iter (± 3551) 360401 ns/iter (± 4084) 1.00
html/document_fragment/visitor/compare/visit_mut_span_panic 370368 ns/iter (± 2887) 370184 ns/iter (± 3133) 1.00
html/document_fragment/visitor/compare/fold_span 397209 ns/iter (± 2629) 396127 ns/iter (± 2337) 1.00
html/document_fragment/visitor/compare/fold_span_panic 446238 ns/iter (± 2698) 448995 ns/iter (± 4116) 0.99
html/lexer/css_2021_spec 15054928 ns/iter (± 159294) 15069132 ns/iter (± 141061) 1.00
html/lexer/github_com_17_05_2022 5816731 ns/iter (± 55594) 5890447 ns/iter (± 62852) 0.99
html/lexer/stackoverflow_com_17_05_2022 5495560 ns/iter (± 58475) 5572644 ns/iter (± 26224) 0.99
html/parser/parser_document/css_2021_spec 24534355 ns/iter (± 293574) 24568391 ns/iter (± 263576) 1.00
html/parser/parser_document/github_com_17_05_2022 8440852 ns/iter (± 87715) 8430920 ns/iter (± 77475) 1.00
html/parser/parser_document/stackoverflow_com_17_05_2022 7430882 ns/iter (± 41832) 7461011 ns/iter (± 59618) 1.00
html/parser/parser_document_fragment/css_2021_spec 24557725 ns/iter (± 184392) 24495187 ns/iter (± 331971) 1.00
html/parser/parser_document_fragment/github_com_17_05_2022 8562729 ns/iter (± 91805) 8485602 ns/iter (± 84698) 1.01
html/parser/parser_document_fragment/stackoverflow_com_17_05_2022 7460037 ns/iter (± 58555) 7487862 ns/iter (± 69772) 1.00

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

Please sign in to comment.