}
}
}
- TrailRef::AttrVarHeapLink(h) => {
- if h < self.hb {
- self.trail.push(TrailEntry::build_with(
- TrailEntryTag::TrailedAttrVarHeapLink,
- h as u64,
- ));
-
- self.tr += 1;
- }
- }
TrailRef::AttrVarListLink(h, l) => {
if h < self.hb {
self.trail.push(TrailEntry::build_with(
TrailEntryTag::TrailedAttrVar => {
self.machine_st.heap[h] = attr_var_as_cell!(h);
}
- TrailEntryTag::TrailedAttrVarHeapLink => {
- self.machine_st.heap[h] = heap_loc_as_cell!(h);
- }
TrailEntryTag::TrailedAttrVarListLink => {
let l = self.machine_st.trail[i + 1].get_value() as usize;
// trail elements.
TrailedHeapVar = 0b011101,
TrailedStackVar = 0b011111,
- TrailedAttrVarHeapLink = 0b100001,
TrailedAttrVarListLink = 0b100011,
TrailedAttachedValue = 0b100101,
TrailedBlackboardEntry = 0b100111,
#[derive(Debug, Clone, Copy)]
pub enum TrailRef {
Ref(Ref),
- AttrVarHeapLink(usize),
AttrVarListLink(usize, usize),
BlackboardEntry(Atom),
BlackboardOffset(Atom, HeapCellValue), // key atom, key value
TrailedHeapVar = 0b011110,
TrailedStackVar = 0b011111,
TrailedAttrVar = 0b101110,
- TrailedAttrVarHeapLink = 0b100010,
TrailedAttrVarListLink = 0b100011,
TrailedAttachedValue = 0b101010,
TrailedBlackboardEntry = 0b100110,