luaur_code_gen/functions/
execute_getvarargs_const.rs1use core::ffi::c_int;
2
3use crate::macros::vm_reg::VM_REG;
4use crate::type_aliases::lua_state::lua_State;
5use luaur_vm::macros::clvalue::clvalue;
6use luaur_vm::macros::setnilvalue::setnilvalue;
7use luaur_vm::macros::setobj_2_s::setobj2s;
8use luaur_vm::type_aliases::stk_id::StkId;
9use luaur_vm::type_aliases::t_value::TValue;
10
11pub unsafe fn execute_getvarargs_const(L: *mut lua_State, base: StkId, rai: c_int, b: c_int) {
12 let l_ptr = L as *mut luaur_vm::records::lua_state::lua_State;
13 let cl = clvalue!((*(*l_ptr).ci).func);
14 let p = {
15 let l = &(*cl).inner.l;
16 l.p
17 };
18 let n = base.offset_from((*(*l_ptr).ci).func) as c_int - (*p).numparams as c_int - 1;
19
20 let ra = VM_REG!(rai, l_ptr, base) as *mut TValue;
21
22 let mut j = 0;
23 while j < b && j < n {
24 setobj2s!(
25 l_ptr,
26 ra.add(j as usize),
27 base.sub(n as usize).add(j as usize) as *const TValue
28 );
29 j += 1;
30 }
31 let mut j = n;
32 while j < b {
33 setnilvalue!(ra.add(j as usize));
34 j += 1;
35 }
36}
37
38#[no_mangle]
39pub unsafe extern "C" fn executeGETVARARGSConst(
40 L: *mut lua_State,
41 base: StkId,
42 rai: c_int,
43 b: c_int,
44) {
45 execute_getvarargs_const(L, base, rai, b);
46}