Skip to main content

luaur_code_gen/methods/
ir_lowering_a_64_start_block.rs

1use crate::enums::code_gen_counter::CodeGenCounter;
2use crate::enums::ir_block_kind::IrBlockKind;
3use crate::records::ir_block::kBlockNoStartPc;
4use crate::records::ir_block::IrBlock;
5use crate::records::ir_function::IrFunction;
6use crate::records::ir_lowering_a_64::IrLoweringA64;
7use luaur_common::FFlag;
8
9impl IrLoweringA64 {
10    pub fn ir_lowering_a_64_start_block(&mut self, curr: &IrBlock) {
11        if curr.startpc != kBlockNoStartPc {
12            let counter = if curr.kind == IrBlockKind::Fallback {
13                CodeGenCounter::FallbackBlockExecuted
14            } else {
15                CodeGenCounter::RegularBlockExecuted
16            };
17            self.ir_lowering_a_64_alloc_and_increment_counter_at(counter, curr.startpc);
18        }
19
20        if FFlag::LuauCodegenVmExitSync.get() && curr.kind == IrBlockKind::ExitSync {
21            let block_index = unsafe { (*self.function).get_block_index(curr) };
22            self.regs.setup_exit_sync_entry(block_index);
23        }
24    }
25}