luaur-code-gen 0.1.3

Native (A64/X64) code generation for Luau (Rust).
Documentation
use core::ffi::c_char;

use luaur_vm::macros::clvalue::clvalue;
use luaur_vm::macros::lua_g_typeerror::luaG_typeerror;
use luaur_vm::macros::ttisfunction::ttisfunction;
use luaur_vm::type_aliases::lua_state::lua_State;
use luaur_vm::type_aliases::t_value::TValue;

const ITERATE_OVER: *const c_char = b"iterate over\0".as_ptr() as *const c_char;

#[allow(non_snake_case)]
pub unsafe fn forg_prep_xnext_fallback(L: *mut lua_State, ra: *mut TValue, pc: i32) {
    if !ttisfunction!(ra as *const TValue) {
        let cl = clvalue!((*(*L).ci).func as *const TValue);
        let cl_l = &(*cl).inner.l;
        (*(*L).ci).savedpc = cl_l.p.as_ref().unwrap().code.add(pc as usize);

        luaG_typeerror!(L, ra as *const TValue, ITERATE_OVER);
    }
}

#[no_mangle]
pub unsafe extern "C" fn forgPrepXnextFallback(L: *mut lua_State, ra: *mut TValue, pc: i32) {
    forg_prep_xnext_fallback(L, ra, pc);
}