diff options
| author | bors <bors@rust-lang.org> | 2025-02-07 03:36:38 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2025-02-07 03:36:38 +0000 |
| commit | f37c19062c7e7dceff77eca8f70fb222e4d36590 (patch) | |
| tree | 225585d0efecf24655cd973134f4eb345dc19562 /compiler/rustc_data_structures/src/stack.rs | |
| parent | 942db6782f4a28c55b0b75b38fd4394d0483390f (diff) | |
| parent | b1be2d5494f20ebc9a678acbde72168660038a7f (diff) | |
| download | rust-f37c19062c7e7dceff77eca8f70fb222e4d36590.tar.gz rust-f37c19062c7e7dceff77eca8f70fb222e4d36590.zip | |
Auto merge of #136658 - matthiaskrgr:rollup-tg1vmex, r=matthiaskrgr
Rollup of 7 pull requests Successful merges: - #133925 (disallow `repr()` on invalid items) - #136069 (Simplify slice indexing in next trait solver) - #136152 (Stabilize `map_many_mut` feature) - #136219 (Misc. `rustc_hir` cleanups 🧹) - #136580 (Couple of changes to run rustc in miri) - #136636 (Couple of minor cleanups to the diagnostic infrastructure) - #136645 (Clippy subtree update) r? `@ghost` `@rustbot` modify labels: rollup
Diffstat (limited to 'compiler/rustc_data_structures/src/stack.rs')
| -rw-r--r-- | compiler/rustc_data_structures/src/stack.rs | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/compiler/rustc_data_structures/src/stack.rs b/compiler/rustc_data_structures/src/stack.rs index 3d6d0003483..102b3640911 100644 --- a/compiler/rustc_data_structures/src/stack.rs +++ b/compiler/rustc_data_structures/src/stack.rs @@ -17,6 +17,18 @@ const STACK_PER_RECURSION: usize = 16 * 1024 * 1024; // 16MB /// /// Should not be sprinkled around carelessly, as it causes a little bit of overhead. #[inline] +#[cfg(not(miri))] pub fn ensure_sufficient_stack<R>(f: impl FnOnce() -> R) -> R { stacker::maybe_grow(RED_ZONE, STACK_PER_RECURSION, f) } + +/// Grows the stack on demand to prevent stack overflow. Call this in strategic locations +/// to "break up" recursive calls. E.g. almost any call to `visit_expr` or equivalent can benefit +/// from this. +/// +/// Should not be sprinkled around carelessly, as it causes a little bit of overhead. +#[cfg(miri)] +#[inline] +pub fn ensure_sufficient_stack<R>(f: impl FnOnce() -> R) -> R { + f() +} |
