inference count call_inline, fail on undefined index

This commit is contained in:
Mark Thom
2022-07-20 13:31:44 -06:00
parent 6b05ee5130
commit 0aec980aa8
3 changed files with 11 additions and 10 deletions

View File

@@ -5014,6 +5014,11 @@ impl Machine {
if self.machine_st.fail {
self.machine_st.backtrack();
} else {
try_or_throw!(
self.machine_st,
(self.machine_st.increment_call_count_fn)(&mut self.machine_st)
);
}
}
&Instruction::ExecuteInlineCallN(arity, _) => {
@@ -5025,6 +5030,11 @@ impl Machine {
if self.machine_st.fail {
self.machine_st.backtrack();
} else {
try_or_throw!(
self.machine_st,
(self.machine_st.increment_call_count_fn)(&mut self.machine_st)
);
}
}
}

View File

@@ -166,15 +166,6 @@ impl CodeIndex {
}
}
#[inline(always)]
pub(crate) fn is_dynamic_undefined(&self) -> bool {
match self.0.tag() {
IndexPtrTag::DynamicUndefined => true,
_ => false,
}
}
pub(crate) fn local(&self) -> Option<usize> {
match self.0.tag() {
IndexPtrTag::Index => Some(self.0.p() as usize),

View File

@@ -1018,7 +1018,7 @@ impl Machine {
let index_cell = self.machine_st.heap[s+goal_arity+1];
if let Some(code_index) = get_structure_index(index_cell) {
if code_index.is_undefined() || code_index.is_dynamic_undefined() {
if code_index.is_undefined() {
self.machine_st.fail = true;
return Ok(());
}