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