correct register threshold calculation.
This commit is contained in:
@@ -59,17 +59,10 @@ impl MachineState {
|
||||
|
||||
pub(super)
|
||||
fn calculate_register_threshold(&self) -> usize {
|
||||
let mut count = 0;
|
||||
|
||||
for r in 1 .. MAX_ARITY + 1 {
|
||||
if let &Addr::HeapCell(0) = &self[RegType::Temp(r)] {
|
||||
break;
|
||||
}
|
||||
|
||||
count += 1;
|
||||
}
|
||||
|
||||
count
|
||||
/* for all we know, all registers might be valid when we
|
||||
* return from the verify_attributes interrupt. we currently
|
||||
* lack a more precise way of determining this. */
|
||||
MAX_ARITY
|
||||
}
|
||||
|
||||
fn verify_attributes(&mut self)
|
||||
|
||||
@@ -341,13 +341,13 @@ fn add_module_code(wam: &mut Machine, mut module: Module, code: Code, mut indice
|
||||
|
||||
module.code_dir.extend(code_dir);
|
||||
module.op_dir.extend(op_dir.into_iter());
|
||||
|
||||
|
||||
for (name, arity) in indices.code_dir.keys().cloned() {
|
||||
if name.owning_module() == module.module_decl.name {
|
||||
wam.indices.dynamic_code_dir.remove(&(name.owning_module(), name, arity));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
wam.add_module(module, code);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user