luaur-code-gen 0.1.0

Native (A64/X64) code generation for Luau (Rust).
Documentation
use crate::enums::ir_op_kind::IrOpKind;
use crate::functions::visit_arguments::visit_arguments;
use crate::macros::codegen_assert::CODEGEN_ASSERT;
use crate::records::ir_inst::IrInst;
use crate::records::remove_dead_store_state::RemoveDeadStoreState;
use alloc::vec::Vec;

pub fn update_remaining_uses(state: &mut RemoveDeadStoreState, inst: &mut IrInst, index: u32) {
    let remaining: *mut Vec<u32> = state.remaining_uses;

    unsafe {
        (&mut *remaining)[index as usize] = inst.use_count as u32;
    }

    visit_arguments(inst, |op| {
        if op.kind() == IrOpKind::Inst {
            unsafe {
                CODEGEN_ASSERT!((&*remaining)[op.index() as usize] != 0);
                (&mut *remaining)[op.index() as usize] -= 1;
            }
        }
    });
}