< prev index next >
src/share/vm/oops/instanceRefKlass.inline.hpp
Print this page
rev 8203 : imported patch remove_config
*** 53,63 ****
// treat referent as normal oop
Devirtualizer<nv>::do_oop(closure, referent_addr);
}
}
T* next_addr = (T*)java_lang_ref_Reference::next_addr(obj);
- if (ReferenceProcessor::pending_list_uses_discovered_field()) {
T next_oop = oopDesc::load_heap_oop(next_addr);
// Treat discovered as normal oop, if ref is not "active" (next non-NULL)
if (!oopDesc::is_null(next_oop) && contains(disc_addr)) {
// i.e. ref is not "active"
debug_only(
--- 53,62 ----
*** 66,87 ****
PTR_FORMAT, p2i(disc_addr));
}
)
Devirtualizer<nv>::do_oop(closure, disc_addr);
}
- } else {
- // 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.
- debug_only(
- T next_oop = oopDesc::load_heap_oop(next_addr);
- T disc_oop = oopDesc::load_heap_oop(disc_addr);
- assert(oopDesc::is_null(next_oop) || oopDesc::is_null(disc_oop),
- err_msg("Found an inactive reference " PTR_FORMAT " with a non-NULL"
- "discovered field", p2i(obj)));
- )
- }
// treat next as normal oop
if (contains(next_addr)) {
Devirtualizer<nv>::do_oop(closure, next_addr);
}
}
--- 65,74 ----
< prev index next >