Skip to content

Commit

Permalink
move reset_stack_limit off C stack (closes #2679)
Browse files Browse the repository at this point in the history
  • Loading branch information
bblum committed Jun 28, 2012
1 parent af2d01e commit ae7b0ac
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 15 deletions.
18 changes: 5 additions & 13 deletions src/rt/rust_task.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -615,13 +615,6 @@ struct reset_args {

void
reset_stack_limit_on_c_stack(reset_args *args) {
rust_task *task = args->task;
uintptr_t sp = args->sp;
while (!sp_in_stk_seg(sp, task->stk)) {
task->stk = task->stk->prev;
assert(task->stk != NULL && "Failed to find the current stack");
}
task->record_stack_limit();
}

/*
Expand All @@ -632,12 +625,11 @@ when unwinding through __morestack).
void
rust_task::reset_stack_limit() {
uintptr_t sp = get_sp();
// Have to do the rest on the C stack because it involves
// freeing stack segments, logging, etc.
// FIXME (#2679): This probably doesn't need to happen on the C
// stack now
reset_args ra = {this, sp};
call_on_c_stack(&ra, (void*)reset_stack_limit_on_c_stack);
while (!sp_in_stk_seg(sp, stk)) {
stk = stk->prev;
assert(stk != NULL && "Failed to find the current stack");
}
record_stack_limit();
}

void
Expand Down
2 changes: 0 additions & 2 deletions src/rt/rust_upcall.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,6 @@ call_upcall_on_c_stack(rust_task *task, void *args, void *fn_ptr) {
task->call_on_c_stack(args, fn_ptr);
}

extern "C" void record_sp_limit(void *limit);

/**********************************************************************
* Switches to the C-stack and invokes |fn_ptr|, passing |args| as argument.
* This is used by the C compiler to call foreign functions and by other
Expand Down

0 comments on commit ae7b0ac

Please sign in to comment.