Skip to main content

luaur_code_gen/functions/
get_instruction_count_code_gen_assembly.rs

1use crate::functions::get_op_length::get_op_length;
2use crate::type_aliases::instruction_ir_builder::Instruction;
3use luaur_common::enums::luau_opcode::LuauOpcode;
4use luaur_common::macros::luau_insn_op::LUAU_INSN_OP;
5
6pub fn get_instruction_count_instruction_size(insns: *const Instruction, size: u32) -> u32 {
7    let mut count: u32 = 0;
8    let mut i: u32 = 0;
9
10    while i < size {
11        unsafe {
12            count += 1;
13            let op = LUAU_INSN_OP(*insns.add(i as usize)) as u8;
14            let op_enum = LuauOpcode::from(op);
15            i += get_op_length(op_enum) as u32;
16        }
17    }
18
19    count
20}