Skip to main content

luaur_compiler/methods/
compiler_get_export_table_reg.rs

1use crate::records::compiler::Compiler;
2use luaur_ast::records::ast_node::AstNode;
3use luaur_common::enums::luau_opcode::LuauOpcode;
4
5impl Compiler {
6    pub fn get_export_table_reg(&mut self, node: *mut AstNode) -> u8 {
7        let local_ptr = &mut self.export_table_local as *mut _;
8        let reg = self.get_local_reg(local_ptr);
9        if reg >= 0 {
10            return reg as u8;
11        }
12
13        let upval = self.get_upval(local_ptr);
14        let reg = self.alloc_reg(node, 1);
15        unsafe {
16            (*self.bytecode).emit_abc(LuauOpcode::LOP_GETUPVAL, reg, upval, 0);
17        }
18        reg
19    }
20}