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::*;
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;
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;
}