diff --git a/src/machine.cpp b/src/machine.cpp index 7f9f25cd90..34892a00d1 100644 --- a/src/machine.cpp +++ b/src/machine.cpp @@ -379,13 +379,15 @@ referenceTargetUnreachable(Thread* t, Heap::Visitor* v, object* p) void referenceUnreachable(Thread* t, Heap::Visitor* v, object* p) { + object r = static_cast(t->m->heap->follow(*p)); + if (DebugReferences) { fprintf(stderr, "reference %p unreachable (target %p)\n", - *p, jreferenceTarget(t, *p)); + *p, jreferenceTarget(t, r)); } - if (jreferenceQueue(t, *p) - and t->m->heap->status(jreferenceQueue(t, *p)) != Heap::Unreachable) + if (jreferenceQueue(t, r) + and t->m->heap->status(jreferenceQueue(t, r)) != Heap::Unreachable) { // queue is reachable - add the reference referenceTargetUnreachable(t, v, p);