luaur-code-gen 0.1.1

Native (A64/X64) code generation for Luau (Rust).
Documentation
use crate::functions::get_code_gen_context::get_code_gen_context;
use crate::records::shared_code_gen_context::SharedCodeGenContext;
use crate::type_aliases::lua_state::lua_State;
use luaur_vm::records::proto::Proto;

pub fn on_destroy_function(L: *mut lua_State, proto: *mut Proto) {
    unsafe {
        if L.is_null() || proto.is_null() {
            return;
        }

        let ctx = get_code_gen_context(L);
        if !ctx.is_null() && !(*proto).execdata.is_null() {
            SharedCodeGenContext::on_destroy_function((*proto).execdata);
        }

        (*proto).execdata = core::ptr::null_mut();
        (*proto).exectarget = 0;
        (*proto).codeentry = (*proto).code;
    }
}

#[export_name = "on_destroy_function"]
pub unsafe extern "C" fn on_destroy_function_export(L: *mut lua_State, proto: *mut Proto) {
    on_destroy_function(L, proto);
}