Closed
Description
Currently looks like this:
// The minimum stack size, in bytes, of a Rust stack, excluding red zone
size_t min_sz = sched_loop->min_stack_size;
// Try to reuse an existing stack segment
if (stk != NULL && stk->next != NULL) {
size_t next_sz = user_stack_size(stk->next);
if (min_sz <= next_sz && requested_sz <= next_sz) {
stk = stk->next;
return;
}
}
I think that min_sz <= next_sz
is an invariant. We should never be allocating a next_sz
that is smaller than min_stack_siz
. Change it to an assert (that it preferably disabled when RUST_NBEBUG
). This saves a number of instructions and makes accessing the sched_loop
unnecessary on the fast path.