From d7e8da8324bdd5ee470fee4c17fdaafc1e4b6872 Mon Sep 17 00:00:00 2001 From: Mark Thom Date: Thu, 4 Oct 2018 22:28:42 -0600 Subject: [PATCH] minor modification to lco in codegen --- src/prolog/codegen.rs | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/prolog/codegen.rs b/src/prolog/codegen.rs index 7d2dd1ab..4846c728 100644 --- a/src/prolog/codegen.rs +++ b/src/prolog/codegen.rs @@ -10,7 +10,6 @@ use prolog::targets::*; use std::cell::Cell; use std::collections::{HashMap}; -use std::mem; use std::rc::Rc; use std::vec::Vec; @@ -236,18 +235,15 @@ impl<'a, TermMarker: Allocator<'a>> CodeGenerator let mut dealloc_index = code.len() - 1; match code.last_mut() { - Some(&mut Line::Control(ref mut ctrl)) => { - let old_ctrl = mem::replace(ctrl, ControlInstruction::Proceed); - - match old_ctrl { - ControlInstruction::CallClause(ct, arity, pvs, false, use_default_cp) => - *ctrl = ControlInstruction::CallClause(ct, arity, pvs, true, use_default_cp), - ControlInstruction::JmpBy(arity, offset, pvs, false) => - *ctrl = ControlInstruction::JmpBy(arity, offset, pvs, true), - ControlInstruction::Proceed => {}, + Some(&mut Line::Control(ref mut ctrl)) => + match ctrl { + &mut ControlInstruction::CallClause(_, _, _, ref mut last_call, _) => + *last_call = true, + &mut ControlInstruction::JmpBy(_, _, _, ref mut last_call) => + *last_call = true, + &mut ControlInstruction::Proceed => {}, _ => dealloc_index += 1 - } - }, + }, Some(&mut Line::Cut(CutInstruction::Cut(_))) => dealloc_index += 1, _ => {} -- 2.54.0