bool check_stack(CallFrame* call_frame, void* end) { // @TODO assumes stack growth direction if(unlikely(reinterpret_cast<uintptr_t>(end) < stack_limit_)) { raise_stack_error(call_frame); return false; } return true; }
bool check_stack(void* end) { // @TODO assumes stack growth direction if(reinterpret_cast<intptr_t>(stack_start_) - reinterpret_cast<intptr_t>(end) > cStackDepthMax) { raise_stack_error(); return false; } return true; }
bool check_stack(STATE, void* stack_address) { ssize_t stack_used = (reinterpret_cast<intptr_t>(current_stack_start_) - reinterpret_cast<intptr_t>(stack_address)); if(stack_used < 0) stack_used = -stack_used; if(stack_used > stack_size_) { raise_stack_error(state); return false; } return true; }