luaur_code_gen/functions/
forg_loop_non_table_fallback_deprecated.rs1use luaur_vm::functions::lua_d_call::lua_d_call;
2use luaur_vm::macros::setobj_2_s::setobj_2_s;
3use luaur_vm::macros::ttisnil::ttisnil;
4use luaur_vm::type_aliases::t_value::TValue;
5
6use crate::macros::vm_reg::VM_REG;
7use crate::type_aliases::lua_state::LuaState;
8use luaur_common::macros::luau_assert::LUAU_ASSERT;
9
10pub unsafe fn forg_loop_non_table_fallback_deprecated(
11 L: *mut luaur_vm::records::lua_state::lua_State,
12 insn_a: i32,
13 aux: i32,
14) -> bool {
15 let l_ptr = L;
16
17 let base: *mut TValue = (*l_ptr).base;
18 let mut ra: *mut TValue = VM_REG!(insn_a, l_ptr, base);
19
20 setobj_2_s!(l_ptr, ra.add(3 + 2), ra.add(2));
22 setobj_2_s!(l_ptr, ra.add(3 + 1), ra.add(1));
23 setobj_2_s!(l_ptr, ra.add(3), ra);
24
25 (*l_ptr).top = ra.add(3 + 3); LUAU_ASSERT!((*l_ptr).top <= (*l_ptr).stack_last);
27
28 lua_d_call(l_ptr, ra.add(3), aux as u8 as i32);
29 (*l_ptr).top = (*(*l_ptr).ci).top;
30
31 let base = (*l_ptr).base;
33 ra = VM_REG!(insn_a, l_ptr, base);
34
35 setobj_2_s!(l_ptr, ra.add(2), ra.add(3));
37
38 !ttisnil!(ra.add(3))
39}
40
41#[no_mangle]
42pub unsafe extern "C" fn forgLoopNonTableFallback_DEPRECATED(
43 L: *mut luaur_vm::records::lua_state::LuaState,
44 insn_a: i32,
45 aux: i32,
46) -> bool {
47 forg_loop_non_table_fallback_deprecated(L, insn_a, aux)
48}