< prev index next >
src/hotspot/share/gc/shared/referenceProcessor.cpp
Print this page
rev 49831 : imported patch 8201492-properly-implement-non-contiguous-reference-processing
rev 49834 : [mq]: 8202021-cleanup-referenceprocessor
rev 49835 : [mq]: 8202021-stefanj-review
*** 381,397 ****
}
}
}
void DiscoveredListIterator::load_ptrs(DEBUG_ONLY(bool allow_null_referent)) {
! _discovered_addr = java_lang_ref_Reference::discovered_addr_raw(_ref);
! oop discovered = java_lang_ref_Reference::discovered(_ref);
! assert(_discovered_addr && oopDesc::is_oop_or_null(discovered),
"Expected an oop or NULL for discovered field at " PTR_FORMAT, p2i(discovered));
_next_discovered = discovered;
! _referent_addr = java_lang_ref_Reference::referent_addr_raw(_ref);
! _referent = java_lang_ref_Reference::referent(_ref);
assert(Universe::heap()->is_in_reserved_or_null(_referent),
"Wrong oop found in java.lang.Reference object");
assert(allow_null_referent ?
oopDesc::is_oop_or_null(_referent)
: oopDesc::is_oop(_referent),
--- 381,398 ----
}
}
}
void DiscoveredListIterator::load_ptrs(DEBUG_ONLY(bool allow_null_referent)) {
! _current_discovered_addr = java_lang_ref_Reference::discovered_addr_raw(_current_discovered);
! oop discovered = java_lang_ref_Reference::discovered(_current_discovered);
! assert(_current_discovered_addr && oopDesc::is_oop_or_null(discovered),
"Expected an oop or NULL for discovered field at " PTR_FORMAT, p2i(discovered));
_next_discovered = discovered;
!
! _referent_addr = java_lang_ref_Reference::referent_addr_raw(_current_discovered);
! _referent = java_lang_ref_Reference::referent(_current_discovered);
assert(Universe::heap()->is_in_reserved_or_null(_referent),
"Wrong oop found in java.lang.Reference object");
assert(allow_null_referent ?
oopDesc::is_oop_or_null(_referent)
: oopDesc::is_oop(_referent),
*** 399,414 ****
(allow_null_referent ? " or NULL" : ""),
p2i(_referent));
}
void DiscoveredListIterator::remove() {
! assert(oopDesc::is_oop(_ref), "Dropping a bad reference");
! RawAccess<>::oop_store(_discovered_addr, oop(NULL));
// First _prev_next ref actually points into DiscoveredList (gross).
oop new_next;
! if (_next_discovered == _ref) {
// At the end of the list, we should make _prev point to itself.
// If _ref is the first ref, then _prev_next will be in the DiscoveredList,
// and _prev will be NULL.
new_next = _prev_discovered;
} else {
--- 400,415 ----
(allow_null_referent ? " or NULL" : ""),
p2i(_referent));
}
void DiscoveredListIterator::remove() {
! assert(oopDesc::is_oop(_current_discovered), "Dropping a bad reference");
! RawAccess<>::oop_store(_current_discovered_addr, oop(NULL));
// First _prev_next ref actually points into DiscoveredList (gross).
oop new_next;
! if (_next_discovered == _current_discovered) {
// At the end of the list, we should make _prev point to itself.
// If _ref is the first ref, then _prev_next will be in the DiscoveredList,
// and _prev will be NULL.
new_next = _prev_discovered;
} else {
< prev index next >