From: Mark Thom Date: Thu, 5 Apr 2018 20:02:20 +0000 (-0600) Subject: add the notion of unbound variables to register allocators. X-Git-Tag: v0.8.110~503 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=7c4af6f311f0cb3b95c740ab9eea71776da5121d;p=scryer-prolog.git add the notion of unbound variables to register allocators. --- diff --git a/src/prolog/allocator.rs b/src/prolog/allocator.rs index 0a9595a9..5fbe9fac 100644 --- a/src/prolog/allocator.rs +++ b/src/prolog/allocator.rs @@ -48,7 +48,11 @@ pub trait Allocator<'a> } fn get(&self, var: Rc) -> 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) -> bool { + self.get(var) == temp_v!(0) } fn record_register(&mut self, var: Rc, r: RegType) { diff --git a/src/prolog/mod.rs b/src/prolog/mod.rs index 31bde83b..a5b6d87b 100644 --- a/src/prolog/mod.rs +++ b/src/prolog/mod.rs @@ -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;