luaur_compiler/functions/
assign_mutable.rs1use luaur_ast::records::ast_name::AstName;
2use luaur_ast::records::ast_name_table::AstNameTable;
3
4use luaur_common::records::dense_hash_map::DenseHashMap;
5
6use crate::enums::global::Global;
7
8#[inline]
9pub fn assign_mutable(
10 globals: &mut DenseHashMap<AstName, Global>,
11 names: &AstNameTable,
12 mutable_globals: *const *const core::ffi::c_char,
13) {
14 let name = names.get(c"_G".as_ptr());
15 if !name.value.is_null() {
16 *globals.get_or_insert(name) = Global::Mutable;
17 }
18
19 if mutable_globals.is_null() {
20 return;
21 }
22
23 let mut ptr = mutable_globals;
24 unsafe {
25 while !(*ptr).is_null() {
26 let name = names.get(*ptr);
27 if !name.value.is_null() {
28 *globals.get_or_insert(name) = Global::Mutable;
29 }
30 ptr = ptr.add(1);
31 }
32 }
33}