implement new disjunction compilation
This commit is contained in:
@@ -1409,7 +1409,7 @@ impl Machine {
|
||||
|
||||
let vars: Vec<_> = vars
|
||||
.union(&result.supp_vars) // difference + union does not cancel.
|
||||
.map(|v| Term::Var(Cell::default(), Var::Generated(v.get_value())))
|
||||
.map(|v| Term::Var(Cell::default(), VarPtr::from(format!("_{}", v.get_value()))))
|
||||
.collect();
|
||||
|
||||
let helper_clause_loc = self.code.len();
|
||||
@@ -1571,8 +1571,8 @@ impl Machine {
|
||||
#[inline(always)]
|
||||
pub(crate) fn is_reset_cont_marker(&self, p: usize) -> bool {
|
||||
match &self.code[p] {
|
||||
&Instruction::CallResetContinuationMarker(_) |
|
||||
&Instruction::ExecuteResetContinuationMarker(_) => true,
|
||||
&Instruction::CallResetContinuationMarker |
|
||||
&Instruction::ExecuteResetContinuationMarker => true,
|
||||
_ => false
|
||||
}
|
||||
}
|
||||
@@ -4911,9 +4911,7 @@ impl Machine {
|
||||
|
||||
let p_functor = self.deref_register(2);
|
||||
|
||||
let p = to_local_code_ptr(&self.machine_st.heap, p_functor).unwrap();
|
||||
|
||||
let num_cells = *self.code[p].perm_vars_mut().unwrap();
|
||||
let num_cells = self.machine_st.stack.index_and_frame(e).prelude.num_cells;
|
||||
let mut addrs = vec![];
|
||||
|
||||
for idx in 1..num_cells + 1 {
|
||||
|
||||
Reference in New Issue
Block a user