From: Mark Thom Date: Sat, 16 Nov 2019 23:53:29 +0000 (-0400) Subject: Merge branch 'master' of https://github.com/mthom/scryer-prolog X-Git-Tag: v0.8.118~40 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=c219d9ad5f73ac2b77fec6948874d548ec1b292a;p=scryer-prolog.git Merge branch 'master' of https://github.com/mthom/scryer-prolog --- c219d9ad5f73ac2b77fec6948874d548ec1b292a diff --cc src/prolog/machine/machine_state_impl.rs index 4d1918db,7392d65c..90ddcb54 --- a/src/prolog/machine/machine_state_impl.rs +++ b/src/prolog/machine/machine_state_impl.rs @@@ -6,9 -6,9 +6,8 @@@ use crate::prolog::arithmetic::* use crate::prolog::clause_types::*; use crate::prolog::forms::*; use crate::prolog::heap_iter::*; - use crate::prolog::heap_print::*; use crate::prolog::instructions::*; use crate::prolog::machine::INTERRUPT; -use crate::prolog::machine::and_stack::*; use crate::prolog::machine::attributed_variables::*; use crate::prolog::machine::code_repo::CodeRepo; use crate::prolog::machine::copier::*; diff --cc src/prolog/machine/mod.rs index 7eef9b8f,051ad296..e71bd826 --- a/src/prolog/machine/mod.rs +++ b/src/prolog/machine/mod.rs @@@ -8,8 -7,8 +7,7 @@@ use crate::prolog::heap_print::* use crate::prolog::instructions::*; use crate::prolog::machine::heap::Heap; use crate::prolog::read::*; - use crate::prolog::write::{next_keypress, ContinueResult}; -mod and_stack; mod attributed_variables; pub(super) mod code_repo; pub mod compile; diff --cc src/prolog/machine/system_calls.rs index 6fa315f4,cd494313..c8b841c3 --- a/src/prolog/machine/system_calls.rs +++ b/src/prolog/machine/system_calls.rs @@@ -1685,20 -1742,15 +1742,15 @@@ impl MachineState self.p = CodePtr::DynamicTransaction(trans_type, p); return Ok(()); } - &SystemClauseType::ReturnFromAttributeGoals => { - self.deallocate(); - self.p = CodePtr::Local(LocalCodePtr::TopLevel(0, 0)); - return Ok(()); - } &SystemClauseType::ReturnFromVerifyAttr => { let e = self.e; - let frame_len = self.and_stack[e].len(); + let frame_len = self.stack.index_and_frame(e).prelude.univ_prelude.num_cells; - for i in 1..frame_len - 1 { - self[RegType::Temp(i)] = self.and_stack[e][i].clone(); + for i in 1 .. frame_len - 1 { + self[RegType::Temp(i)] = self.stack.index_and_frame(e)[i].clone(); } - if let &Addr::Con(Constant::Usize(b0)) = &self.and_stack[e][frame_len - 1] { + if let &Addr::Con(Constant::Usize(b0)) = &self.stack.index_and_frame(e)[frame_len - 1] { self.b0 = b0; }