]> Repositorios git - scryer-prolog.git/commitdiff
add the notion of unbound variables to register allocators.
authorMark Thom <[email protected]>
Thu, 5 Apr 2018 20:02:20 +0000 (14:02 -0600)
committerMark Thom <[email protected]>
Thu, 5 Apr 2018 20:02:20 +0000 (14:02 -0600)
src/prolog/allocator.rs
src/prolog/mod.rs

index 0a9595a957b89914dfaabad252eb6eb58a249dc6..5fbe9fac0ca456aa062d857c087acc10cc12b8cf 100644 (file)
@@ -48,7 +48,11 @@ pub trait Allocator<'a>
     }
     
     fn get(&self, var: Rc<Var>) -> RegType {
-        self.bindings().get(&var).unwrap().as_reg_type()
+        self.bindings().get(&var).map_or(temp_v!(0), |v| v.as_reg_type())
+    }
+
+    fn is_unbound(&self, var: Rc<Var>) -> bool {
+        self.get(var) == temp_v!(0)
     }
     
     fn record_register(&mut self, var: Rc<Var>, r: RegType) {
index 31bde83b71d4168bf38f847c72baf8f10d81210d..a5b6d87bf96d0d0c37db033cea93f33febb699ea 100644 (file)
@@ -1,13 +1,13 @@
 extern crate num;
 extern crate ordered_float;
 
-pub mod allocator;
 pub mod and_stack;
 #[macro_use]
 pub mod macros;
 #[macro_use]
 pub mod ast;
 #[macro_use]
+pub mod allocator;
 pub mod arithmetic;
 pub mod builtins;
 pub mod codegen;