Register new snapshots
This commit is contained in:
parent
e5e865b804
commit
f4fa7c8a07
9 changed files with 13 additions and 1265 deletions
|
|
@ -30,7 +30,7 @@ pub static RED_ZONE: uint = 20 * 1024;
|
|||
/// stacks are currently not enabled as segmented stacks, but rather one giant
|
||||
/// stack segment. This means that whenever we run out of stack, we want to
|
||||
/// truly consider it to be stack overflow rather than allocating a new stack.
|
||||
#[cfg(not(test), not(stage0))] // in testing, use the original libstd's version
|
||||
#[cfg(not(test))] // in testing, use the original libstd's version
|
||||
#[lang = "stack_exhausted"]
|
||||
extern fn stack_exhausted() {
|
||||
use option::{Option, None, Some};
|
||||
|
|
@ -103,35 +103,6 @@ extern fn stack_exhausted() {
|
|||
}
|
||||
}
|
||||
|
||||
#[no_mangle] // - this is called from C code
|
||||
#[no_split_stack] // - it would be sad for this function to trigger __morestack
|
||||
#[doc(hidden)] // - Function must be `pub` to get exported, but it's
|
||||
// irrelevant for documentation purposes.
|
||||
#[cfg(stage0, not(test))] // in testing, use the original libstd's version
|
||||
pub extern "C" fn rust_stack_exhausted() {
|
||||
use option::{Option, None, Some};
|
||||
use owned::Box;
|
||||
use rt::local::Local;
|
||||
use rt::task::Task;
|
||||
use str::Str;
|
||||
use intrinsics;
|
||||
|
||||
unsafe {
|
||||
let limit = get_sp_limit();
|
||||
record_sp_limit(limit - RED_ZONE / 2);
|
||||
let task: Option<Box<Task>> = Local::try_take();
|
||||
let name = match task {
|
||||
Some(ref task) => {
|
||||
task.name.as_ref().map(|n| n.as_slice())
|
||||
}
|
||||
None => None
|
||||
};
|
||||
let name = name.unwrap_or("<unknown>");
|
||||
rterrln!("task '{}' has overflowed its stack", name);
|
||||
intrinsics::abort();
|
||||
}
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
pub unsafe fn record_stack_bounds(stack_lo: uint, stack_hi: uint) {
|
||||
// When the old runtime had segmented stacks, it used a calculation that was
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue