update call/N indices in user-level code_dir in addition to those of pre-loaded modules

This commit is contained in:
Mark Thom
2021-02-11 15:38:30 -07:00
parent 170a71bd02
commit 2429971bcd

View File

@@ -249,14 +249,13 @@ impl Machine {
} }
fn configure_modules(&mut self) { fn configure_modules(&mut self) {
fn update_call_n_indices(loader: &Module, target_module: &mut Module) { fn update_call_n_indices(loader: &Module, target_code_dir: &mut CodeDir) {
for arity in 1..66 { for arity in 1..66 {
let key = (clause_name!("call"), arity); let key = (clause_name!("call"), arity);
match loader.code_dir.get(&key) { match loader.code_dir.get(&key) {
Some(src_code_index) => { Some(src_code_index) => {
let target_code_index = target_module let target_code_index = target_code_dir
.code_dir
.entry(key.clone()) .entry(key.clone())
.or_insert_with(|| CodeIndex::new(IndexPtr::Undefined)); .or_insert_with(|| CodeIndex::new(IndexPtr::Undefined));
@@ -294,9 +293,11 @@ impl Machine {
} }
for (_, target_module) in self.indices.modules.iter_mut() { for (_, target_module) in self.indices.modules.iter_mut() {
update_call_n_indices(&loader, target_module); update_call_n_indices(&loader, &mut target_module.code_dir);
} }
update_call_n_indices(&loader, &mut self.indices.code_dir);
self.indices.modules.insert(clause_name!("loader"), loader); self.indices.modules.insert(clause_name!("loader"), loader);
} else { } else {
unreachable!() unreachable!()