swc_ecma_utils/
stack_size.rs

1/// Calls `callback` with a larger stack size.
2#[inline(always)]
3#[cfg(any(
4    target_arch = "wasm32",
5    target_arch = "arm",
6    not(feature = "stacker"),
7    // miri does not work with stacker
8    miri
9))]
10pub fn maybe_grow<R, F: FnOnce() -> R>(_red_zone: usize, _stack_size: usize, callback: F) -> R {
11    callback()
12}
13
14/// Calls `callback` with a larger stack size.
15#[inline(always)]
16#[cfg(all(
17    not(any(target_arch = "wasm32", target_arch = "arm", miri)),
18    feature = "stacker"
19))]
20pub fn maybe_grow<R, F: FnOnce() -> R>(red_zone: usize, stack_size: usize, callback: F) -> R {
21    stacker::maybe_grow(red_zone, stack_size, callback)
22}
23
24/// Calls `callback` with a larger stack size.
25///
26/// `maybe_grow` with default values.
27pub fn maybe_grow_default<R, F: FnOnce() -> R>(callback: F) -> R {
28    let (red_zone, stack_size) = (4 * 1024, 16 * 1024);
29
30    maybe_grow(red_zone, stack_size, callback)
31}