#![cfg(not(debug_assertions))] // All of these alloc_with tests will fail with "fatal runtime error: stack overflow" unless LLVM // manages to optimize the stack writes away. // // We only run them when debug_assertions are not set, as we expect them to fail outside release // mode. use bumpalo::Bump; #[test] fn alloc_with_large_array() { let b = Bump::new(); b.alloc_with(|| [4u8; 10_000_000]); } #[allow(dead_code)] struct LargeStruct { small: usize, big1: [u8; 20_000_000], big2: [u8; 20_000_000], big3: [u8; 20_000_000], } #[test] fn alloc_with_large_struct() { let b = Bump::new(); b.alloc_with(|| LargeStruct { small: 1, big1: [2; 20_000_000], big2: [3; 20_000_000], big3: [4; 20_000_000], }); } #[test] fn alloc_with_large_tuple() { let b = Bump::new(); b.alloc_with(|| { ( 1u32, LargeStruct { small: 2, big1: [3; 20_000_000], big2: [4; 20_000_000], big3: [5; 20_000_000], }, ) }); } enum LargeEnum { Small, #[allow(dead_code)] Large([u8; 10_000_000]), } #[test] fn alloc_with_large_enum() { let b = Bump::new(); b.alloc_with(|| LargeEnum::Small); }