Skip to main content

luaur_vm/functions/
restore_stack_limit.rs

1use crate::functions::lua_d_realloc_ci::lua_d_realloc_ci;
2use crate::macros::cast_int::cast_int;
3use crate::macros::extra_stack::EXTRA_STACK;
4use crate::macros::luai_maxcalls::LUAI_MAXCALLS;
5use crate::type_aliases::lua_state::lua_State;
6use luaur_common::macros::luau_assert::LUAU_ASSERT;
7
8#[allow(dead_code)]
9pub unsafe fn restore_stack_limit(L: *mut lua_State) {
10    LUAU_ASSERT!(
11        (*L).stack_last.offset_from((*L).stack) == ((*L).stacksize - EXTRA_STACK) as isize
12    );
13    if (*L).size_ci > LUAI_MAXCALLS {
14        let inuse = cast_int!((*L).ci.offset_from((*L).base_ci));
15        if inuse + 1 < LUAI_MAXCALLS {
16            lua_d_realloc_ci(L, LUAI_MAXCALLS);
17        }
18    }
19}