From: Mark Thom Date: Thu, 11 Feb 2021 22:38:30 +0000 (-0700) Subject: update call/N indices in user-level code_dir in addition to those of pre-loaded modules X-Git-Tag: v0.9.0~150^2~56 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=2429971bcd19674470f4d938692c65ad4f23facc;p=scryer-prolog.git update call/N indices in user-level code_dir in addition to those of pre-loaded modules --- diff --git a/src/machine/mod.rs b/src/machine/mod.rs index 17ab0222..36e1e629 100644 --- a/src/machine/mod.rs +++ b/src/machine/mod.rs @@ -249,14 +249,13 @@ impl Machine { } 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 { let key = (clause_name!("call"), arity); match loader.code_dir.get(&key) { Some(src_code_index) => { - let target_code_index = target_module - .code_dir + let target_code_index = target_code_dir .entry(key.clone()) .or_insert_with(|| CodeIndex::new(IndexPtr::Undefined)); @@ -294,9 +293,11 @@ impl Machine { } 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); } else { unreachable!()