diff options
Diffstat (limited to 'byterun/extern.c')
-rw-r--r-- | byterun/extern.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/byterun/extern.c b/byterun/extern.c index 8ff896e8a..0578d7dbe 100644 --- a/byterun/extern.c +++ b/byterun/extern.c @@ -306,14 +306,14 @@ static void extern_rec(value v) writecode32(CODE_INT32, n); return; } - if (Is_young(v) || Is_in_heap(v) || Is_atom(v)) { + if (Is_in_value_area(v)) { header_t hd = Hd_val(v); tag_t tag = Tag_hd(hd); mlsize_t sz = Wosize_hd(hd); if (tag == Forward_tag) { value f = Forward_val (v); - if (Is_block (f) && (Is_young (f) || Is_in_heap (f)) + if (Is_block (f) && Is_in_value_area(f) && (Tag_val (f) == Forward_tag || Tag_val (f) == Lazy_tag || Tag_val (f) == Double_tag)){ /* Do not short-circuit the pointer. */ |