remove GetLevelAndUnify and replace it with GetCutPoint

This commit is contained in:
Mark Thom
2022-12-27 23:42:35 -07:00
committed by Mark
parent 097849385e
commit 942095baa7
7 changed files with 5 additions and 70 deletions

View File

@@ -566,7 +566,7 @@ impl VariableClassifier {
let build_stack_len = build_stack.len();
// TODO: insert GetLevelAndUnify between
// TODO: insert GetCutPoint between
// the two traversal states and detect
// that as a chunk boundary in
// insert_set_last_chunk_type ??
@@ -587,22 +587,6 @@ impl VariableClassifier {
state_stack.push(TraversalState::BuildNot(build_stack_len));
state_stack.push(TraversalState::Term(terms[0]));
}
Term::Clause(_, atom!("$get_level"), terms) if terms.len() == 1 => {
state_stack.push(TraversalState::IncrChunkNum);
// TODO: need to classify this variable?
// what is the difference between $get_cp and this exactly?
if let Term::Var(_, ref var) = &terms[0] {
build_stack.push(
QueryTerm::GetLevelAndUnify(
Cell::default(),
var.clone(),
),
);
} else {
return Err(CompilationError::InadmissibleQueryTerm);
}
}
Term::Clause(_, atom!(":"), mut terms) if terms.len() == 2 => {
let term_loc = chunk_type.to_gen_context(self.current_chunk_num);

View File

@@ -1152,17 +1152,6 @@ impl Machine {
self.machine_st[r] = fixnum_as_cell!(Fixnum::build_with(b0 as i64));
self.machine_st.p += 1;
}
&Instruction::GetLevelAndUnify(r) => {
// let b0 = self.machine_st[perm_v!(1)];
let b0 = cell_as_fixnum!(
self.machine_st.stack[stack_loc!(AndFrame, self.machine_st.e, 1)]
);
let a = self.machine_st.store(self.machine_st.deref(self.machine_st[r]));
// unify_fn!(&mut self.machine_st, a, b0);
self.machine_st.unify_fixnum(b0, a);
step_or_fail!(self, self.machine_st.p += 1);
}
&Instruction::Cut(r) => {
let value = self.machine_st[r];
self.machine_st.cut_body(value);