fix ordering bug in postVisit() and remove debug logging

This commit is contained in:
Joel Dice 2007-07-10 08:21:22 -06:00
parent 4decde57e6
commit 3bffa44824

View File

@ -177,24 +177,18 @@ postVisit(Thread* t, Heap::Visitor* v)
if (m->heap->status(*p) == Heap::Unreachable) { if (m->heap->status(*p) == Heap::Unreachable) {
// reference is unreachable - remove it from the list // reference is unreachable - remove it from the list
fprintf(stderr, "unreachable wr: %p\n", *p);
*p = jreferenceNext(t, *p); *p = jreferenceNext(t, *p);
} else if (m->heap->status(jreferenceTarget(t, *p)) == Heap::Unreachable) { } else if (m->heap->status(jreferenceTarget(t, *p)) == Heap::Unreachable) {
// target is unreachable - clear the reference and remove it // target is unreachable - clear the reference and remove it
// from the list // from the list
fprintf(stderr, "target unreachable for wr: %p\n", *p);
jreferenceTarget(t, *p) = 0; jreferenceTarget(t, *p) = 0;
*p = jreferenceNext(t, *p); *p = jreferenceNext(t, *p);
} else { } else {
// both reference and target are reachable // both reference and target are reachable
fprintf(stderr, "viable wr: %p\n", *p);
v->visit(&jreferenceTarget(t, *p));
v->visit(p); v->visit(p);
v->visit(&jreferenceTarget(t, *p));
if (m->heap->status(*p) == Heap::Tenured) { if (m->heap->status(*p) == Heap::Tenured) {
// the reference is tenured, so we remove it from // the reference is tenured, so we remove it from
@ -253,8 +247,8 @@ postVisit(Thread* t, Heap::Visitor* v)
} else { } else {
// target is reachable // target is reachable
v->visit(&jreferenceTarget(t, *p));
v->visit(p); v->visit(p);
v->visit(&jreferenceTarget(t, *p));
p = &jreferenceNext(t, *p); p = &jreferenceNext(t, *p);
} }