Skip to main content

luaur_bytecode/methods/
bc_function_get_block_index.rs

1use crate::records::bc_block::BcBlock;
2use crate::records::bc_function::BcFunction;
3use luaur_common::macros::luau_assert::LUAU_ASSERT;
4
5impl BcFunction {
6    pub fn get_block_index(&self, block: &BcBlock) -> u32 {
7        // Can only be called with blocks from our vector
8        let data_ptr = self.blocks.as_ptr();
9        let block_ptr = block as *const BcBlock;
10
11        unsafe {
12            let size = self.blocks.len();
13            let end_ptr = data_ptr.add(size);
14
15            LUAU_ASSERT!(block_ptr >= data_ptr && block_ptr <= end_ptr);
16
17            block_ptr.offset_from(data_ptr) as u32
18        }
19    }
20}