From c74fd533333d3c63a98b0fa5f2a050b17fc9f5fb Mon Sep 17 00:00:00 2001 From: Mark Thom Date: Fri, 9 Apr 2021 15:54:12 -0600 Subject: [PATCH] save environments for predicates with unblocked cuts for setup_call_cleanup --- src/iterators.rs | 5 ++++- src/machine/stack.rs | 1 + src/toplevel.pl | 3 --- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/iterators.rs b/src/iterators.rs index a83c5796..87ba9a3b 100644 --- a/src/iterators.rs +++ b/src/iterators.rs @@ -547,7 +547,10 @@ impl<'a> ChunkedIterator<'a> { arity = 1; break; } - ChunkedTerm::BodyTerm(&QueryTerm::UnblockedCut(..)) => result.push(term), + ChunkedTerm::BodyTerm(&QueryTerm::UnblockedCut(..)) => { + self.deep_cut_encountered = true; + result.push(term); + } ChunkedTerm::BodyTerm(&QueryTerm::Clause(_, ClauseType::Inlined(_), ..)) => { result.push(term) } diff --git a/src/machine/stack.rs b/src/machine/stack.rs index 8240d2a8..2a2104ea 100644 --- a/src/machine/stack.rs +++ b/src/machine/stack.rs @@ -176,6 +176,7 @@ impl Stack { for idx in 0..num_cells { let offset = prelude_size::() + idx * mem::size_of::(); + ptr::write( (self.buf.top as usize + offset) as *mut Addr, Addr::StackCell(e, idx + 1), diff --git a/src/toplevel.pl b/src/toplevel.pl index 4cc087a7..5582f6c2 100644 --- a/src/toplevel.pl +++ b/src/toplevel.pl @@ -252,13 +252,10 @@ print_and_read_input_if_not_last(Last, MaxDepth, Terms, AllEqs) :- read_input_and_print_(MaxDepth, Terms, AllEqs) :- get_single_char(C), ( member(C, [;, ' ', n]) -> - % write(' ;'), nl nl, write('; ') ; member(C, ['\n', .]) -> nl, write('; ...'), nl, false - % write(' ;\n ...'), nl, - % false ; C = h -> nl, help_message, -- 2.54.0