Skip to main content

luaur_bytecode/methods/
bc_inst_helper_set_imm_input.rs

1use crate::enums::bc_imm_kind::BcImmKind;
2use crate::enums::bc_op_kind::BcOpKind;
3use crate::records::bc_inst_helper::BcInstHelper;
4use luaur_common::macros::luau_assert::LUAU_ASSERT;
5
6impl BcInstHelper<'_> {
7    pub fn set_imm_input(&mut self, input_idx: u32, value: i32) {
8        if self.get_bc_op(input_idx).kind == BcOpKind::None {
9            let imm_op = self.graph.add_imm(BcImmKind::Int);
10            self.set_bc_op(input_idx, imm_op);
11        }
12
13        let op = self.get_bc_op(input_idx);
14        let imm = self.graph.imm_op(op);
15
16        LUAU_ASSERT!(imm.kind == BcImmKind::Int);
17        unsafe {
18            imm.value.valueInt = value;
19        }
20    }
21}