luaur-code-gen 0.1.3

Native (A64/X64) code generation for Luau (Rust).
Documentation
use crate::enums::ir_block_kind::IrBlockKind;
use crate::functions::predecessors::predecessors;
use crate::macros::codegen_assert::CODEGEN_ASSERT;
use crate::records::ir_block::IrBlock;
use crate::records::ir_lowering_x_64::IrLoweringX64;

impl IrLoweringX64 {
    pub fn finish_block(&mut self, curr: &IrBlock, next: &IrBlock) {
        if !self.regs.spills.is_empty() {
            let function = unsafe { &*self.function };
            let next_idx = function.get_block_index(next);
            let curr_idx = function.get_block_index(curr);

            for pred_idx in predecessors(&function.cfg, next_idx) {
                let pred_block = &function.blocks[pred_idx as usize];
                CODEGEN_ASSERT!(pred_idx == curr_idx || pred_block.kind == IrBlockKind::Dead);
            }

            CODEGEN_ASSERT!(next.use_count == 1);
        }
    }
}