consider Str, PStrLoc in ElideLists of StackfulHeapIterator (#2075)
This commit is contained in:
@@ -236,17 +236,17 @@ impl<'a, ElideLists: ListElisionPolicy> StackfulPreOrderHeapIter<'a, ElideLists>
|
|||||||
let cell = self.read_cell(loc);
|
let cell = self.read_cell(loc);
|
||||||
|
|
||||||
read_heap_cell!(cell,
|
read_heap_cell!(cell,
|
||||||
(HeapCellValueTag::Lis, vh) => {
|
(HeapCellValueTag::Lis |
|
||||||
|
HeapCellValueTag::Str |
|
||||||
|
HeapCellValueTag::PStrLoc, vh) => {
|
||||||
let forward = if ElideLists::elide_lists() { true } else { cell.get_mark_bit() };
|
let forward = if ElideLists::elide_lists() { true } else { cell.get_mark_bit() };
|
||||||
|
|
||||||
if forward && self.heap[vh].get_mark_bit() {
|
if forward && self.heap[vh].get_mark_bit() {
|
||||||
self.read_cell_mut(loc).set_forwarding_bit(true);
|
self.read_cell_mut(loc).set_forwarding_bit(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
(HeapCellValueTag::Str |
|
(HeapCellValueTag::AttrVar |
|
||||||
HeapCellValueTag::AttrVar |
|
HeapCellValueTag::Var, vh) => {
|
||||||
HeapCellValueTag::Var |
|
|
||||||
HeapCellValueTag::PStrLoc, vh) => {
|
|
||||||
if self.heap[vh].get_mark_bit() {
|
if self.heap[vh].get_mark_bit() {
|
||||||
self.read_cell_mut(loc).set_forwarding_bit(true);
|
self.read_cell_mut(loc).set_forwarding_bit(true);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user