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, _) => {
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)
+ );
}
}
}
}
}
-
- #[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),
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(());
}