From 48c1d05151ff9354ef2dd8dedce605371899b100 Mon Sep 17 00:00:00 2001 From: Mark Thom Date: Tue, 7 Dec 2021 22:26:46 -0700 Subject: [PATCH] use heap_loc to refer to 0-arity atom instead of str_loc --- src/lib/builtins.pl | 2 +- src/machine/machine_state_impl.rs | 13 ++++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) 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); } -- 2.54.0