remove QueryTermRef from Allocator

This commit is contained in:
Mark Thom
2017-11-11 17:00:10 -07:00
parent e503e312a1
commit 498389e9e9
4 changed files with 13 additions and 13 deletions

View File

@@ -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>;

View File

@@ -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));

View File

@@ -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;
}
}

View File

@@ -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;
}
}