Vendor things
This commit is contained in:
parent
5deceec006
commit
977e3c17e5
19434 changed files with 10682014 additions and 0 deletions
27
third-party/vendor/stacker/tests/simple.rs
vendored
Normal file
27
third-party/vendor/stacker/tests/simple.rs
vendored
Normal file
|
|
@ -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);
|
||||
}
|
||||
95
third-party/vendor/stacker/tests/smoke.rs
vendored
Normal file
95
third-party/vendor/stacker/tests/smoke.rs
vendored
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
extern crate stacker;
|
||||
|
||||
use std::sync::mpsc;
|
||||
use std::thread;
|
||||
|
||||
#[inline(never)]
|
||||
fn __stacker_black_box(_: *const u8) {}
|
||||
|
||||
#[test]
|
||||
fn deep() {
|
||||
fn foo(n: usize, s: &mut [u8]) {
|
||||
__stacker_black_box(s.as_ptr());
|
||||
if n > 0 {
|
||||
stacker::maybe_grow(64 * 1024, 1024 * 1024, || {
|
||||
let mut s = [0u8; 1024];
|
||||
foo(n - 1, &mut s);
|
||||
__stacker_black_box(s.as_ptr());
|
||||
})
|
||||
} else {
|
||||
println!("bottom");
|
||||
}
|
||||
}
|
||||
|
||||
let limit = if cfg!(target_arch = "wasm32") {
|
||||
2000
|
||||
} else {
|
||||
256 * 1024
|
||||
};
|
||||
foo(limit, &mut []);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg_attr(target_arch = "wasm32", ignore)]
|
||||
fn panic() {
|
||||
fn foo(n: usize, s: &mut [u8]) {
|
||||
__stacker_black_box(s.as_ptr());
|
||||
if n > 0 {
|
||||
stacker::maybe_grow(64 * 1024, 1024 * 1024, || {
|
||||
let mut s = [0u8; 1024];
|
||||
foo(n - 1, &mut s);
|
||||
__stacker_black_box(s.as_ptr());
|
||||
})
|
||||
} else {
|
||||
panic!("bottom");
|
||||
}
|
||||
}
|
||||
|
||||
let (tx, rx) = mpsc::channel::<()>();
|
||||
thread::spawn(move || {
|
||||
foo(64 * 1024, &mut []);
|
||||
drop(tx);
|
||||
})
|
||||
.join()
|
||||
.unwrap_err();
|
||||
|
||||
assert!(rx.recv().is_err());
|
||||
}
|
||||
|
||||
fn recursive<F: FnOnce()>(n: usize, f: F) -> usize {
|
||||
if n > 0 {
|
||||
stacker::grow(64 * 1024, || recursive(n - 1, f) + 1)
|
||||
} else {
|
||||
f();
|
||||
0
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg_attr(target_arch = "wasm32", ignore)]
|
||||
fn catch_panic() {
|
||||
let panic_result = std::panic::catch_unwind(|| {
|
||||
recursive(100, || panic!());
|
||||
});
|
||||
assert!(panic_result.is_err());
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg_attr(target_arch = "wasm32", ignore)]
|
||||
fn catch_panic_inside() {
|
||||
stacker::grow(64 * 1024, || {
|
||||
let panic_result = std::panic::catch_unwind(|| {
|
||||
recursive(100, || panic!());
|
||||
});
|
||||
assert!(panic_result.is_err());
|
||||
});
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg_attr(target_arch = "wasm32", ignore)]
|
||||
fn catch_panic_leaf() {
|
||||
stacker::grow(64 * 1024, || {
|
||||
let panic_result = std::panic::catch_unwind(|| panic!());
|
||||
assert!(panic_result.is_err());
|
||||
});
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue