new_stk(rust_scheduler *sched, rust_task *task, size_t requested_sz)
{
LOG(task, mem, "creating new stack for task %" PRIxPTR, task);
+ if (task->stk) {
+ check_stack_canary(task->stk);
+ }
// The minimum stack size, in bytes, of a Rust stack, excluding red zone
size_t min_sz = get_min_stk_size(sched->min_stack_size);
static void check_stack_alignment() { }
#endif
-static inline void
-do_sanity_check(rust_task *task) {
- check_stack_alignment();
- task->check_stack_canary();
-}
-
#define UPCALL_SWITCH_STACK(A, F) call_upcall_on_c_stack((void*)A, (void*)F)
inline void
call_upcall_on_c_stack(void *args, void *fn_ptr) {
+ check_stack_alignment();
rust_task *task = rust_scheduler::get_task();
- do_sanity_check(task);
rust_scheduler *sched = task->sched;
sched->c_context.call_shim_on_c_stack(args, fn_ptr);
}
extern "C" CDECL void
upcall_call_shim_on_c_stack(void *args, void *fn_ptr) {
rust_task *task = rust_scheduler::get_task();
- do_sanity_check(task);
// FIXME (1226) - The shim functions generated by rustc contain the
// morestack prologue, so we need to let them know they have enough
extern "C" CDECL void
upcall_reset_stack_limit() {
rust_task *task = rust_scheduler::get_task();
- do_sanity_check(task);
task->reset_stack_limit();
- task->check_stack_canary();
}
//