luaur_code_gen/functions/
get_memory_size.rs1use crate::functions::get_native_proto_exec_data_header_native_proto_exec_data::get_native_proto_exec_data_header_mut;
2use crate::records::native_proto_exec_data_header::NativeProtoExecDataHeader;
3use crate::type_aliases::instruction_ir_builder::Instruction;
4use crate::type_aliases::lua_state::lua_State;
5use luaur_vm::records::proto::Proto;
6
7pub fn get_memory_size(L: *mut lua_State, proto: *mut Proto) -> usize {
8 let proto_ref = unsafe { &*proto };
9 let exec_data_header =
10 unsafe { &*get_native_proto_exec_data_header_mut(proto_ref.execdata as *mut u32) };
11
12 let exec_data_size = core::mem::size_of::<NativeProtoExecDataHeader>()
13 + (exec_data_header.bytecode_instruction_count as usize)
14 * core::mem::size_of::<Instruction>();
15
16 exec_data_size + exec_data_header.native_code_size
17}
18
19#[export_name = "get_memory_size"]
20pub unsafe extern "C" fn get_memory_size_export(L: *mut lua_State, proto: *mut Proto) -> usize {
21 get_memory_size(L, proto)
22}