luaur_bytecode/methods/
bc_function_get_block_index.rs1use 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 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}