luaur_code_gen/functions/
predecessors.rs1use crate::macros::codegen_assert::CODEGEN_ASSERT;
2use crate::records::block_iterator_wrapper::BlockIteratorWrapper;
3use crate::records::cfg_info::CfgInfo;
4
5pub fn predecessors(cfg: &CfgInfo, block_idx: u32) -> BlockIteratorWrapper {
6 CODEGEN_ASSERT!(block_idx < cfg.predecessors_offsets.len() as u32);
7
8 let start = cfg.predecessors_offsets[block_idx as usize];
9 let end = if block_idx + 1 < cfg.predecessors_offsets.len() as u32 {
10 cfg.predecessors_offsets[(block_idx + 1) as usize]
11 } else {
12 cfg.predecessors.len() as u32
13 };
14
15 BlockIteratorWrapper {
16 itBegin: unsafe { cfg.predecessors.as_ptr().add(start as usize) },
17 itEnd: unsafe { cfg.predecessors.as_ptr().add(end as usize) },
18 }
19}