allocate cut variables as temporaries when in non-allocating clause (#2183)

This commit is contained in:
Mark
2023-11-28 12:58:54 -07:00
parent b8ef367824
commit de5de0cfaf
3 changed files with 27 additions and 10 deletions

View File

@@ -926,12 +926,16 @@ impl<'b> CodeGenerator<'b> {
match term {
&QueryTerm::GetLevel(var_num) => {
let code = branch_code_stack.code(code);
let r = self.marker.mark_cut_var(var_num, chunk_num);
let r = self
.marker
.mark_cut_var::<QueryInstruction>(var_num, term_loc, code);
code.push_back(instr!("get_level", r));
}
&QueryTerm::GetCutPoint { var_num, prev_b } => {
let code = branch_code_stack.code(code);
let r = self.marker.mark_cut_var(var_num, chunk_num);
let r = self
.marker
.mark_cut_var::<FactInstruction>(var_num, term_loc, code);
code.push_back(if prev_b {
instr!("get_prev_level", r)