luaur-code-gen 0.1.1

Native (A64/X64) code generation for Luau (Rust).
Documentation
use crate::macros::codegen_assert::CODEGEN_ASSERT;
use crate::records::block_iterator_wrapper::BlockIteratorWrapper;
use crate::records::cfg_info::CfgInfo;

pub fn predecessors(cfg: &CfgInfo, block_idx: u32) -> BlockIteratorWrapper {
    CODEGEN_ASSERT!(block_idx < cfg.predecessors_offsets.len() as u32);

    let start = cfg.predecessors_offsets[block_idx as usize];
    let end = if block_idx + 1 < cfg.predecessors_offsets.len() as u32 {
        cfg.predecessors_offsets[(block_idx + 1) as usize]
    } else {
        cfg.predecessors.len() as u32
    };

    BlockIteratorWrapper {
        itBegin: unsafe { cfg.predecessors.as_ptr().add(start as usize) },
        itEnd: unsafe { cfg.predecessors.as_ptr().add(end as usize) },
    }
}