From: Mark Thom Date: Wed, 8 Dec 2021 05:26:46 +0000 (-0700) Subject: use heap_loc to refer to 0-arity atom instead of str_loc X-Git-Tag: v0.9.0^2~105 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=48c1d05151ff9354ef2dd8dedce605371899b100;p=scryer-prolog.git use heap_loc to refer to 0-arity atom instead of str_loc --- diff --git a/src/lib/builtins.pl b/src/lib/builtins.pl index e27a1f43..79b94a51 100644 --- a/src/lib/builtins.pl +++ b/src/lib/builtins.pl @@ -590,7 +590,7 @@ throw(Ball) :- :- non_counted_backtracking '$iterate_find_all'/4. '$iterate_find_all'(Template, Goal, _, LhOffset) :- - call(Goal), + '$call'(Goal), '$copy_to_lh'(LhOffset, Template), '$fail'. '$iterate_find_all'(_, _, Solutions, LhOffset) :- diff --git a/src/machine/machine_state_impl.rs b/src/machine/machine_state_impl.rs index dfaa502e..e408a6e9 100644 --- a/src/machine/machine_state_impl.rs +++ b/src/machine/machine_state_impl.rs @@ -1,7 +1,6 @@ use crate::arena::*; use crate::atom_table::*; use crate::types::*; - use crate::clause_types::*; use crate::forms::*; use crate::heap_iter::*; @@ -3377,11 +3376,15 @@ impl MachineState { self.heap.push(atom_as_cell!(name, arity)); for i in 0..arity { - self.heap.push(heap_loc_as_cell!(h + i + 1)); - } + self.heap.push(heap_loc_as_cell!(h + i + 1)); + } - str_loc_as_cell!(h) - }; + if arity == 0 { + heap_loc_as_cell!(h) + } else { + str_loc_as_cell!(h) + } + }; (self.bind_fn)(self, r, f_a); }