Skip to content

Commit

Permalink
refactor(es/parser): Make stacker an optional dependency (#7720)
Browse files Browse the repository at this point in the history
  • Loading branch information
SkaillZ committed Jul 28, 2023
1 parent 9a57f8a commit 864bdef
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 4 deletions.
4 changes: 2 additions & 2 deletions crates/swc_ecma_parser/Cargo.toml
Expand Up @@ -19,7 +19,7 @@ bench = false
[features]
# Used for debugging
debug = []
default = ["typescript"]
default = ["typescript", "stacker"]
typescript = []
verify = ["swc_ecma_visit"]

Expand All @@ -39,7 +39,7 @@ swc_ecma_ast = { version = "0.107.2", path = "../swc_ecma_ast" }
swc_ecma_visit = { version = "0.93.2", path = "../swc_ecma_visit", optional = true }

[target.'cfg(not(any(target_arch = "wasm32", target_arch = "arm")))'.dependencies]
stacker = "0.1.15"
stacker = { version = "0.1.15", optional = true }

[dev-dependencies]
criterion = "0.5"
Expand Down
7 changes: 5 additions & 2 deletions crates/swc_ecma_parser/src/lib.rs
Expand Up @@ -490,13 +490,16 @@ expose!(parse_file_as_script, Script, |p| { p.parse_script() });
expose!(parse_file_as_program, Program, |p| { p.parse_program() });

#[inline(always)]
#[cfg(any(target_arch = "wasm32", target_arch = "arm"))]
#[cfg(any(target_arch = "wasm32", target_arch = "arm", not(feature = "stacker")))]
fn maybe_grow<R, F: FnOnce() -> R>(_red_zone: usize, _stack_size: usize, callback: F) -> R {
callback()
}

#[inline(always)]
#[cfg(not(any(target_arch = "wasm32", target_arch = "arm")))]
#[cfg(all(
not(any(target_arch = "wasm32", target_arch = "arm")),
feature = "stacker"
))]
fn maybe_grow<R, F: FnOnce() -> R>(red_zone: usize, stack_size: usize, callback: F) -> R {
stacker::maybe_grow(red_zone, stack_size, callback)
}

1 comment on commit 864bdef

@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: 864bdef Previous: 7ba7b6e Ratio
es/full/bugs-1 288406 ns/iter (± 5562) 292613 ns/iter (± 9598) 0.99
es/full/minify/libraries/antd 1344037292 ns/iter (± 11921914) 1300970785 ns/iter (± 10885766) 1.03
es/full/minify/libraries/d3 283416430 ns/iter (± 5389572) 278938859 ns/iter (± 3232583) 1.02
es/full/minify/libraries/echarts 1079303361 ns/iter (± 9729777) 1062319957 ns/iter (± 5585420) 1.02
es/full/minify/libraries/jquery 85080042 ns/iter (± 406503) 84274554 ns/iter (± 166924) 1.01
es/full/minify/libraries/lodash 99006634 ns/iter (± 363899) 98100362 ns/iter (± 349352) 1.01
es/full/minify/libraries/moment 49880044 ns/iter (± 112175) 49631568 ns/iter (± 199292) 1.01
es/full/minify/libraries/react 18026768 ns/iter (± 168903) 17918933 ns/iter (± 33046) 1.01
es/full/minify/libraries/terser 223335200 ns/iter (± 612718) 220362223 ns/iter (± 924512) 1.01
es/full/minify/libraries/three 389774630 ns/iter (± 2727779) 383423154 ns/iter (± 1423791) 1.02
es/full/minify/libraries/typescript 2713288368 ns/iter (± 14450660) 2657663795 ns/iter (± 8921129) 1.02
es/full/minify/libraries/victory 578762742 ns/iter (± 5093209) 568475799 ns/iter (± 3692065) 1.02
es/full/minify/libraries/vue 121741583 ns/iter (± 400493) 120116784 ns/iter (± 247052) 1.01
es/full/codegen/es3 33977 ns/iter (± 86) 34428 ns/iter (± 80) 0.99
es/full/codegen/es5 34108 ns/iter (± 130) 34489 ns/iter (± 135) 0.99
es/full/codegen/es2015 34030 ns/iter (± 111) 34454 ns/iter (± 82) 0.99
es/full/codegen/es2016 34037 ns/iter (± 124) 34452 ns/iter (± 87) 0.99
es/full/codegen/es2017 33839 ns/iter (± 127) 34464 ns/iter (± 77) 0.98
es/full/codegen/es2018 33931 ns/iter (± 56) 34480 ns/iter (± 84) 0.98
es/full/codegen/es2019 34061 ns/iter (± 123) 34509 ns/iter (± 99) 0.99
es/full/codegen/es2020 33880 ns/iter (± 49) 34524 ns/iter (± 79) 0.98
es/full/all/es3 173931297 ns/iter (± 1508531) 174104513 ns/iter (± 835650) 1.00
es/full/all/es5 166084962 ns/iter (± 1246561) 164630441 ns/iter (± 1609662) 1.01
es/full/all/es2015 125218056 ns/iter (± 858176) 124699369 ns/iter (± 904112) 1.00
es/full/all/es2016 123032861 ns/iter (± 676629) 123155353 ns/iter (± 381471) 1.00
es/full/all/es2017 122932079 ns/iter (± 983234) 122801784 ns/iter (± 1719036) 1.00
es/full/all/es2018 120963141 ns/iter (± 1908620) 120767613 ns/iter (± 561454) 1.00
es/full/all/es2019 120036201 ns/iter (± 768330) 120283544 ns/iter (± 786964) 1.00
es/full/all/es2020 116156220 ns/iter (± 667680) 115831872 ns/iter (± 407535) 1.00
es/full/parser 533917 ns/iter (± 5755) 529611 ns/iter (± 5239) 1.01
es/full/base/fixer 18183 ns/iter (± 141) 17998 ns/iter (± 249) 1.01
es/full/base/resolver_and_hygiene 85317 ns/iter (± 290) 83186 ns/iter (± 118) 1.03
serialization of serde 292 ns/iter (± 0) 298 ns/iter (± 0) 0.98
css/minify/libraries/bootstrap 28448191 ns/iter (± 54982) 28909367 ns/iter (± 53277) 0.98
css/visitor/compare/clone 1636611 ns/iter (± 5003) 1632123 ns/iter (± 8182) 1.00
css/visitor/compare/visit_mut_span 1789551 ns/iter (± 5075) 1770668 ns/iter (± 4589) 1.01
css/visitor/compare/visit_mut_span_panic 1851610 ns/iter (± 4338) 1831081 ns/iter (± 4005) 1.01
css/visitor/compare/fold_span 2565248 ns/iter (± 15553) 2561220 ns/iter (± 14094) 1.00
css/visitor/compare/fold_span_panic 2778753 ns/iter (± 9582) 2763839 ns/iter (± 17572) 1.01
css/lexer/bootstrap_5_1_3 4488015 ns/iter (± 4530) 4462435 ns/iter (± 3064) 1.01
css/lexer/foundation_6_7_4 3773597 ns/iter (± 3265) 3754639 ns/iter (± 3275) 1.01
css/lexer/tailwind_3_1_1 716858 ns/iter (± 471) 715398 ns/iter (± 1303) 1.00
css/parser/bootstrap_5_1_3 19674453 ns/iter (± 61830) 20104286 ns/iter (± 89068) 0.98
css/parser/foundation_6_7_4 15539129 ns/iter (± 31453) 16081542 ns/iter (± 45943) 0.97
css/parser/tailwind_3_1_1 2983375 ns/iter (± 5449) 3107646 ns/iter (± 4425) 0.96
es/codegen/colors 720365 ns/iter (± 394886) 734643 ns/iter (± 401977) 0.98
es/codegen/large 2896776 ns/iter (± 1535816) 3134420 ns/iter (± 1682394) 0.92
es/codegen/with-parser/colors 44235 ns/iter (± 540) 45036 ns/iter (± 465) 0.98
es/codegen/with-parser/large 486324 ns/iter (± 1051) 483091 ns/iter (± 726) 1.01
es/minify/libraries/antd 1186461302 ns/iter (± 13334169) 1138085686 ns/iter (± 16542090) 1.04
es/minify/libraries/d3 245575595 ns/iter (± 2261944) 241913269 ns/iter (± 3309026) 1.02
es/minify/libraries/echarts 939303757 ns/iter (± 8000774) 907587296 ns/iter (± 5670936) 1.03
es/minify/libraries/jquery 74461265 ns/iter (± 362304) 74357527 ns/iter (± 149135) 1.00
es/minify/libraries/lodash 89179897 ns/iter (± 932194) 88941073 ns/iter (± 172555) 1.00
es/minify/libraries/moment 43757523 ns/iter (± 263045) 43817384 ns/iter (± 57538) 1.00
es/minify/libraries/react 16077843 ns/iter (± 44122) 16176232 ns/iter (± 29087) 0.99
es/minify/libraries/terser 190275292 ns/iter (± 1712939) 188149099 ns/iter (± 321922) 1.01
es/minify/libraries/three 328931203 ns/iter (± 2337942) 323129330 ns/iter (± 671538) 1.02
es/minify/libraries/typescript 2321904071 ns/iter (± 18905712) 2282172089 ns/iter (± 8093874) 1.02
es/minify/libraries/victory 487765373 ns/iter (± 4122072) 472456794 ns/iter (± 2202431) 1.03
es/minify/libraries/vue 107734922 ns/iter (± 735412) 108088286 ns/iter (± 291029) 1.00
es/visitor/compare/clone 1933907 ns/iter (± 2788) 1928984 ns/iter (± 3274) 1.00
es/visitor/compare/visit_mut_span 2286818 ns/iter (± 4607) 2270956 ns/iter (± 7797) 1.01
es/visitor/compare/visit_mut_span_panic 2327151 ns/iter (± 2833) 2317299 ns/iter (± 3812) 1.00
es/visitor/compare/fold_span 3341391 ns/iter (± 3921) 3313534 ns/iter (± 4216) 1.01
es/visitor/compare/fold_span_panic 3473753 ns/iter (± 6931) 3477057 ns/iter (± 3457) 1.00
es/lexer/colors 12360 ns/iter (± 10) 12546 ns/iter (± 13) 0.99
es/lexer/angular 5997108 ns/iter (± 2443) 6180161 ns/iter (± 7938) 0.97
es/lexer/backbone 785355 ns/iter (± 2102) 800903 ns/iter (± 7709) 0.98
es/lexer/jquery 4372856 ns/iter (± 1594) 4489655 ns/iter (± 5784) 0.97
es/lexer/jquery mobile 6705812 ns/iter (± 7137) 6946337 ns/iter (± 30668) 0.97
es/lexer/mootools 3490765 ns/iter (± 993) 3569666 ns/iter (± 12949) 0.98
es/lexer/underscore 656066 ns/iter (± 1489) 674907 ns/iter (± 1014) 0.97
es/lexer/three 20535024 ns/iter (± 11097) 21248544 ns/iter (± 44746) 0.97
es/lexer/yui 3721214 ns/iter (± 25509) 3850698 ns/iter (± 5118) 0.97
es/parser/colors 26953 ns/iter (± 110) 26273 ns/iter (± 53) 1.03
es/parser/angular 13366355 ns/iter (± 74320) 13411388 ns/iter (± 40783) 1.00
es/parser/backbone 1976062 ns/iter (± 10382) 1994840 ns/iter (± 18508) 0.99
es/parser/jquery 10732412 ns/iter (± 55140) 10742773 ns/iter (± 34447) 1.00
es/parser/jquery mobile 16539766 ns/iter (± 66678) 16567063 ns/iter (± 35543) 1.00
es/parser/mootools 8273180 ns/iter (± 15075) 8294620 ns/iter (± 16078) 1.00
es/parser/underscore 1705977 ns/iter (± 9827) 1708116 ns/iter (± 9213) 1.00
es/parser/three 46277257 ns/iter (± 303554) 45986206 ns/iter (± 175509) 1.01
es/parser/yui 8184468 ns/iter (± 27756) 8203693 ns/iter (± 30971) 1.00
es/preset-env/usage/builtin_type 138411 ns/iter (± 32138) 134705 ns/iter (± 32207) 1.03
es/preset-env/usage/property 17360 ns/iter (± 182) 16316 ns/iter (± 47) 1.06
es/resolver/typescript 88505835 ns/iter (± 938553) 88854912 ns/iter (± 1223927) 1.00
es/fixer/typescript 63707575 ns/iter (± 624345) 63851246 ns/iter (± 269961) 1.00
es/hygiene/typescript 135663766 ns/iter (± 2283789) 132918356 ns/iter (± 743705) 1.02
es/resolver_with_hygiene/typescript 248935173 ns/iter (± 2637525) 243198368 ns/iter (± 761162) 1.02
es/visitor/base-perf/module_clone 59741 ns/iter (± 371) 60913 ns/iter (± 420) 0.98
es/visitor/base-perf/fold_empty 63680 ns/iter (± 379) 64057 ns/iter (± 608) 0.99
es/visitor/base-perf/fold_noop_impl_all 63009 ns/iter (± 336) 64264 ns/iter (± 636) 0.98
es/visitor/base-perf/fold_noop_impl_vec 63768 ns/iter (± 539) 65396 ns/iter (± 573) 0.98
es/visitor/base-perf/boxing_boxed_clone 57 ns/iter (± 8) 57 ns/iter (± 0) 1
es/visitor/base-perf/boxing_unboxed_clone 40 ns/iter (± 1) 40 ns/iter (± 0) 1
es/visitor/base-perf/boxing_boxed 111 ns/iter (± 3) 109 ns/iter (± 0) 1.02
es/visitor/base-perf/boxing_unboxed 77 ns/iter (± 3) 77 ns/iter (± 0) 1
es/visitor/base-perf/visit_empty 0 ns/iter (± 0) 0 ns/iter (± 0) NaN
es/visitor/base-perf/visit_contains_this 2521 ns/iter (± 14) 2539 ns/iter (± 12) 0.99
es/base/parallel/resolver/typescript 3931804519 ns/iter (± 280344298) 4384674556 ns/iter (± 295005176) 0.90
es/base/parallel/hygiene/typescript 1469243949 ns/iter (± 14920463) 1474789056 ns/iter (± 20767135) 1.00
misc/visitors/time-complexity/time 5 136 ns/iter (± 10) 136 ns/iter (± 1) 1
misc/visitors/time-complexity/time 10 325 ns/iter (± 1) 385 ns/iter (± 2) 0.84
misc/visitors/time-complexity/time 15 702 ns/iter (± 3) 676 ns/iter (± 4) 1.04
misc/visitors/time-complexity/time 20 1336 ns/iter (± 4) 1061 ns/iter (± 6) 1.26
misc/visitors/time-complexity/time 40 5016 ns/iter (± 292) 3578 ns/iter (± 27) 1.40
misc/visitors/time-complexity/time 60 10690 ns/iter (± 42) 7337 ns/iter (± 24) 1.46
es/full-target/es2016 238545 ns/iter (± 1511) 235681 ns/iter (± 1163) 1.01
es/full-target/es2017 225724 ns/iter (± 537) 224478 ns/iter (± 533) 1.01
es/full-target/es2018 213284 ns/iter (± 1254) 212600 ns/iter (± 787) 1.00
es2020_nullish_coalescing 70408 ns/iter (± 210) 68723 ns/iter (± 440) 1.02
es2020_optional_chaining 82338 ns/iter (± 248) 79314 ns/iter (± 257) 1.04
es2022_class_properties 119390 ns/iter (± 430) 118367 ns/iter (± 303) 1.01
es2018_object_rest_spread 75601 ns/iter (± 246) 73189 ns/iter (± 308) 1.03
es2019_optional_catch_binding 64450 ns/iter (± 213) 61952 ns/iter (± 209) 1.04
es2017_async_to_generator 64796 ns/iter (± 247) 61887 ns/iter (± 226) 1.05
es2016_exponentiation 69508 ns/iter (± 327) 67051 ns/iter (± 221) 1.04
es2015_arrow 71956 ns/iter (± 301) 70026 ns/iter (± 196) 1.03
es2015_block_scoped_fn 68402 ns/iter (± 338) 66764 ns/iter (± 267) 1.02
es2015_block_scoping 124663 ns/iter (± 266) 122251 ns/iter (± 721) 1.02

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

Please sign in to comment.