]> Repositorios git - scryer-prolog.git/commitdiff
save environments for predicates with unblocked cuts for setup_call_cleanup
authorMark Thom <[email protected]>
Fri, 9 Apr 2021 21:54:12 +0000 (15:54 -0600)
committerMark Thom <[email protected]>
Fri, 9 Apr 2021 21:54:12 +0000 (15:54 -0600)
src/iterators.rs
src/machine/stack.rs
src/toplevel.pl

index a83c57962d31d17a898582c5a109da69f9776a82..87ba9a3b1157cfca9717a86e03ac3134458cb77b 100644 (file)
@@ -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)
                 }
index 8240d2a875e7cfd5bc64c4e9d9f8c95b829fa711..2a2104eabe772de7225afb90813a956350ae8a46 100644 (file)
@@ -176,6 +176,7 @@ impl Stack {
 
             for idx in 0..num_cells {
                 let offset = prelude_size::<AndFramePrelude>() + idx * mem::size_of::<Addr>();
+
                 ptr::write(
                     (self.buf.top as usize + offset) as *mut Addr,
                     Addr::StackCell(e, idx + 1),
index 4cc087a79e01296cc367e2e204bc7eb124c7130d..5582f6c25617a2c8f7f423d96cf9d5a00ef396fa 100644 (file)
@@ -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,