#pragma once #include #include "vector.h" #define REF_NATIVE (1 << 0) struct vm_ref_entry { size_t unit_index; int flags; union { size_t ref_index; uintptr_t ref_native; }; }; struct vm_func_entry { size_t argc, local_count; uint32_t *bytecode; }; struct vm_unit { struct vector ref_table; struct vector functions; struct vector strtab; uint64_t *global_pool; size_t global_pool_size; int is_loaded; }; char **unit_add_string(struct vm_unit *u); struct vm_func_entry *unit_add_function(struct vm_unit *u); struct vm_ref_entry *unit_add_ref(struct vm_unit *u); void unit_free(struct vm_unit *u);