refactor parts of machine_state_impl.rs that consume copier.rs

This commit is contained in:
Mark Thom
2019-02-19 22:01:50 -07:00
parent b710112df2
commit bf62fd7f78

View File

@@ -1348,9 +1348,7 @@ impl MachineState {
pub(super) fn set_ball(&mut self) { pub(super) fn set_ball(&mut self) {
let addr = self[temp_v!(1)].clone(); let addr = self[temp_v!(1)].clone();
self.ball.boundary = self.heap.h; self.ball.boundary = self.heap.h;
copy_term(CopyBallTerm::new(self), addr);
let duplicator = CopyBallTerm::new(self);
copy_term(duplicator, addr);
} }
pub(super) fn setup_call_n(&mut self, arity: usize) -> Option<PredicateKey> pub(super) fn setup_call_n(&mut self, arity: usize) -> Option<PredicateKey>
@@ -2029,13 +2027,7 @@ impl MachineState {
let a1 = self[temp_v!(1)].clone(); let a1 = self[temp_v!(1)].clone();
let a2 = self[temp_v!(2)].clone(); let a2 = self[temp_v!(2)].clone();
// drop the mutable references contained in gadget copy_term(CopyTerm::new(self), a1);
// once the term has been duplicated.
{
let gadget = CopyTerm::new(self);
copy_term(gadget, a1);
}
self.unify(Addr::HeapCell(old_h), a2); self.unify(Addr::HeapCell(old_h), a2);
} }
@@ -2290,7 +2282,7 @@ impl MachineState {
&ChoiceInstruction::TryMeElse(offset) => { &ChoiceInstruction::TryMeElse(offset) => {
let n = self.num_of_args; let n = self.num_of_args;
let gi = self.next_global_index(); let gi = self.next_global_index();
self.or_stack.push(gi, self.or_stack.push(gi,
self.e, self.e,
self.cp.clone(), self.cp.clone(),