Skip to main content

luaur_code_gen/records/
ir_builder.rs

1//! Node: `cxx:Record:Luau.CodeGen:CodeGen/include/Luau/IrBuilder.h:21:ir_builder`
2//! Source: `CodeGen/include/Luau/IrBuilder.h` (IrBuilder.h:21-..., hand-ported; fields only)
3
4use crate::enums::ir_const_kind::IrConstKind;
5use crate::records::host_ir_hooks::HostIrHooks;
6use crate::records::ir_function::IrFunction;
7use crate::records::ir_op::IrOp;
8use alloc::vec::Vec;
9use luaur_common::records::dense_hash_map::DenseHashMap;
10
11#[derive(Debug, Clone, Copy, PartialEq, Eq)]
12pub struct LoopInfo {
13    pub step: IrOp,
14    pub startpc: i32,
15}
16
17#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
18pub struct ConstantKey {
19    pub kind: IrConstKind,
20    pub value: u64,
21}
22
23#[derive(Debug)]
24pub struct IrBuilder {
25    pub host_hooks: *const HostIrHooks, // const HostIrHooks&
26    pub in_terminated_block: bool,
27    pub interrupt_requested: bool,
28
29    pub active_fastcall_fallback: bool,
30    pub fastcall_fallback_return: IrOp,
31    pub cmd_skip_target: i32,
32
33    pub function: IrFunction,
34
35    pub active_block_idx: u32,
36
37    /// Block index at the bytecode instruction
38    pub inst_index_to_block: Vec<u32>,
39
40    pub numeric_loop_stack: Vec<LoopInfo>,
41
42    pub constant_map: DenseHashMap<ConstantKey, u32>,
43}