diff options
Diffstat (limited to 'byterun/minor_gc.c')
-rw-r--r-- | byterun/minor_gc.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/byterun/minor_gc.c b/byterun/minor_gc.c index 7db685e41..e328ddd4c 100644 --- a/byterun/minor_gc.c +++ b/byterun/minor_gc.c @@ -125,9 +125,8 @@ void oldify_one (value v, value *p) if (Is_block (f) && (Is_young (f) || Is_in_heap (f))){ ft = Tag_val (Hd_val (f) == 0 ? Field (f, 0) : f); } - if (ft == Forward_tag || ft == Lazy_tag){ - /* Keep the forward block; copy it as a normal block - (no short-circuit). */ + if (ft == Forward_tag || ft == Lazy_tag || ft == Double_tag){ + /* Do not short-circuit the pointer. Copy as a normal block. */ Assert (Wosize_hd (hd) == 1); result = alloc_shr (1, Forward_tag); *p = result; |