< 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 >