]> Repositorios git - scryer-prolog.git/commitdiff
correct register threshold calculation.
authorMark Thom <[email protected]>
Mon, 18 Mar 2019 03:45:30 +0000 (21:45 -0600)
committerMark Thom <[email protected]>
Mon, 18 Mar 2019 03:45:30 +0000 (21:45 -0600)
src/prolog/machine/attributed_variables.rs
src/prolog/machine/compile.rs

index 174f89f4a2a3031be01bdfec0642048757f36f2a..9301fdfffee501f13a8baf351799d4d56545df9f 100644 (file)
@@ -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)
index b2bb3914d1aba7be984d298aec2f45ba6c345a20..ec615a463bdec2c7f416cc7c9a16168c13947344 100644 (file)
@@ -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);
 }