< prev index next >
src/share/vm/gc_implementation/parallelScavenge/psCompactionManager.cpp
Print this page
rev 8203 : imported patch remove_config
*** 255,265 ****
)
PSParallelCompact::mark_and_push(cm, referent_addr);
}
}
T* next_addr = (T*)java_lang_ref_Reference::next_addr(obj);
- if (ReferenceProcessor::pending_list_uses_discovered_field()) {
// Treat discovered as normal oop, if ref is not "active",
// i.e. if next is non-NULL.
T next_oop = oopDesc::load_heap_oop(next_addr);
if (!oopDesc::is_null(next_oop)) { // i.e. ref is not "active"
T* discovered_addr = (T*)java_lang_ref_Reference::discovered_addr(obj);
--- 255,264 ----
*** 269,290 ****
PTR_FORMAT, p2i(discovered_addr));
}
)
PSParallelCompact::mark_and_push(cm, discovered_addr);
}
- } else {
- #ifdef ASSERT
- // In the case of older JDKs which do not use the discovered
- // field for the pending list, an inactive ref (next != NULL)
- // must always have a NULL discovered field.
- T next = oopDesc::load_heap_oop(next_addr);
- oop discovered = java_lang_ref_Reference::discovered(obj);
- assert(oopDesc::is_null(next) || oopDesc::is_null(discovered),
- err_msg("Found an inactive reference " PTR_FORMAT " with a non-NULL discovered field",
- p2i(obj)));
- #endif
- }
PSParallelCompact::mark_and_push(cm, next_addr);
klass->InstanceKlass::oop_pc_follow_contents(obj, cm);
}
--- 268,277 ----
< prev index next >