diff options
Diffstat (limited to 'vendor/stacker/tests/simple.rs')
-rw-r--r-- | vendor/stacker/tests/simple.rs | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/vendor/stacker/tests/simple.rs b/vendor/stacker/tests/simple.rs new file mode 100644 index 000000000..d4c7820d6 --- /dev/null +++ b/vendor/stacker/tests/simple.rs @@ -0,0 +1,27 @@ +extern crate stacker; + +const RED_ZONE: usize = 100 * 1024; // 100k +const STACK_PER_RECURSION: usize = 1 * 1024 * 1024; // 1MB + +pub fn ensure_sufficient_stack<R, F: FnOnce() -> R + std::panic::UnwindSafe>(f: F) -> R { + stacker::maybe_grow(RED_ZONE, STACK_PER_RECURSION, f) +} + +#[inline(never)] +fn recurse(n: usize) { + let x = [42u8; 50000]; + if n != 0 { + ensure_sufficient_stack(|| recurse(n - 1)); + } + drop(x); +} + +#[test] +fn foo() { + let limit = if cfg!(target_arch = "wasm32") { + 2000 + } else { + 10000 + }; + recurse(limit); +} |