luaur_vm/functions/
stack_init.rs1use crate::macros::basic_ci_size::BASIC_CI_SIZE;
5use crate::macros::basic_stack_size::BASIC_STACK_SIZE;
6use crate::macros::extra_stack::EXTRA_STACK;
7use crate::macros::lua_m_newarray::luaM_newarray;
8use crate::macros::lua_minstack::LUA_MINSTACK;
9use crate::macros::setnilvalue::setnilvalue;
10use crate::records::call_info::CallInfo;
11use crate::type_aliases::lua_state::lua_State;
12use crate::type_aliases::t_value::TValue;
13
14pub unsafe fn stack_init(L1: *mut lua_State, L: *mut lua_State) {
15 (*L1).base_ci = luaM_newarray!(L, BASIC_CI_SIZE, CallInfo, (*L1).hdr.memcat);
17 (*L1).ci = (*L1).base_ci;
18 (*L1).size_ci = BASIC_CI_SIZE;
19 (*L1).end_ci = (*L1).base_ci.add((*L1).size_ci as usize - 1);
20 (*L1).stack = luaM_newarray!(L, BASIC_STACK_SIZE + EXTRA_STACK, TValue, (*L1).hdr.memcat);
22 (*L1).stacksize = BASIC_STACK_SIZE + EXTRA_STACK;
23 let stack = (*L1).stack;
24 for i in 0..(BASIC_STACK_SIZE + EXTRA_STACK) as usize {
25 setnilvalue!(stack.add(i)); }
27 (*L1).top = stack;
28 (*L1).stack_last = stack.add(((*L1).stacksize - EXTRA_STACK) as usize);
29 (*(*L1).ci).func = (*L1).top;
31 setnilvalue!((*L1).top); (*L1).top = (*L1).top.add(1);
33 (*L1).base = (*L1).top;
34 (*(*L1).ci).base = (*L1).top;
35 (*(*L1).ci).top = (*L1).top.add(LUA_MINSTACK as usize);
36}