From 498389e9e9b0e47bb1b33c6bb9381b30561c7683 Mon Sep 17 00:00:00 2001 From: Mark Thom Date: Sat, 11 Nov 2017 17:00:10 -0700 Subject: [PATCH] remove QueryTermRef from Allocator --- src/prolog/allocator.rs | 2 +- src/prolog/codegen.rs | 14 +++++++------- src/prolog/debray_allocator.rs | 4 ++-- src/prolog/naive_allocator.rs | 6 +++--- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/prolog/allocator.rs b/src/prolog/allocator.rs index 2df627ac..c3a3e79b 100644 --- a/src/prolog/allocator.rs +++ b/src/prolog/allocator.rs @@ -18,7 +18,7 @@ pub trait Allocator<'a> fn reset(&mut self); fn reset_contents(&mut self) {} - fn advance(&mut self, GenContext, QueryTermRef<'a>); + fn advance(&mut self, GenContext, usize); fn advance_arg(&mut self); fn bindings(&self) -> &AllocVarDict<'a>; diff --git a/src/prolog/codegen.rs b/src/prolog/codegen.rs index b8625a23..0a6b7851 100644 --- a/src/prolog/codegen.rs +++ b/src/prolog/codegen.rs @@ -311,7 +311,7 @@ impl<'a, TermMarker: Allocator<'a>> CodeGenerator<'a, TermMarker> let mut target = Vec::new(); // reset self.marker.arg_c to 1. - self.marker.advance(term_loc, *term); + self.marker.advance(term_loc, term.arity()); self.marker.mark_var(name, Level::Shallow, vr, term_loc, &mut target); code.push(Line::Query(target)); @@ -354,7 +354,7 @@ impl<'a, TermMarker: Allocator<'a>> CodeGenerator<'a, TermMarker> let mut target = Vec::new(); // reset self.marker.arg_c to 1. - self.marker.advance(term_loc, *term); + self.marker.advance(term_loc, term.arity()); self.marker.mark_var(name, Level::Shallow, vr, term_loc, &mut target); code.push(Line::Query(target)); @@ -380,7 +380,7 @@ impl<'a, TermMarker: Allocator<'a>> CodeGenerator<'a, TermMarker> let mut target = Vec::new(); // reset self.marker.arg_c to 1. - self.marker.advance(term_loc, *term); + self.marker.advance(term_loc, term.arity()); self.marker.mark_var(name, Level::Shallow, vr, term_loc, &mut target); code.push(Line::Query(target)); @@ -389,7 +389,7 @@ impl<'a, TermMarker: Allocator<'a>> CodeGenerator<'a, TermMarker> } }, _ if chunk_num == 0 => { - self.marker.advance(GenContext::Head, *term); + self.marker.advance(GenContext::Head, term.arity()); let iter = term.post_order_iter(); code.push(Line::Query(self.compile_target(iter, term_loc, is_exposed))); @@ -445,7 +445,7 @@ impl<'a, TermMarker: Allocator<'a>> CodeGenerator<'a, TermMarker> let &Rule { head: (ref p0, ref p1), ref clauses } = rule; let mut code = Vec::new(); - self.marker.advance(GenContext::Head, QueryTermRef::Term(p0)); + self.marker.advance(GenContext::Head, p0.arity()); self.compile_seq_prelude(&conjunct_info, &mut code); if p0.is_clause() { @@ -504,7 +504,7 @@ impl<'a, TermMarker: Allocator<'a>> CodeGenerator<'a, TermMarker> let iter = ChunkedIterator::from_fact(term); self.collect_var_data(iter); - self.marker.advance(GenContext::Head, QueryTermRef::Term(term)); + self.marker.advance(GenContext::Head, term.arity()); let mut code = Vec::new(); @@ -527,7 +527,7 @@ impl<'a, TermMarker: Allocator<'a>> CodeGenerator<'a, TermMarker> index: usize, is_exposed: bool) { - self.marker.advance(term_loc, term); + self.marker.advance(term_loc, term.arity()); let iter = term.post_order_iter(); let compiled_query = Line::Query(self.compile_target(iter, term_loc, is_exposed)); diff --git a/src/prolog/debray_allocator.rs b/src/prolog/debray_allocator.rs index 0c1f8dcd..44e3800f 100644 --- a/src/prolog/debray_allocator.rs +++ b/src/prolog/debray_allocator.rs @@ -348,8 +348,8 @@ impl<'a> Allocator<'a> for DebrayAllocator<'a> self.bindings } - fn advance(&mut self, _: GenContext, term: QueryTermRef<'a>) { + fn advance(&mut self, _: GenContext, arity: usize) { self.arg_c = 1; - self.temp_lb = term.arity() + 1; + self.temp_lb = arity + 1; } } diff --git a/src/prolog/naive_allocator.rs b/src/prolog/naive_allocator.rs index c4588f35..4b1f13c7 100644 --- a/src/prolog/naive_allocator.rs +++ b/src/prolog/naive_allocator.rs @@ -129,13 +129,13 @@ impl<'a> Allocator<'a> for NaiveAllocator<'a> self.bindings.clear(); } - fn advance(&mut self, term_loc: GenContext, term: QueryTermRef<'a>) { + fn advance(&mut self, term_loc: GenContext, arity: usize) { if let GenContext::Head = term_loc { self.arg_c = 1; - self.temp_c = max(term.arity() + 1, self.temp_c); + self.temp_c = max(arity + 1, self.temp_c); } else { self.arg_c = 1; - self.temp_c = term.arity() + 1; + self.temp_c = arity + 1; } } -- 2.54.0