< prev index next >
src/share/vm/memory/referenceProcessor.cpp
Print this page
rev 7522 : * * *
8066827: Remove ReferenceProcessor::clean_up_discovered_references()
Summary: Abandon rather than clean up discovered references.
Reviewed-by:
@@ -66,14 +66,14 @@
RefDiscoveryPolicy == ReferentBasedDiscovery,
"Unrecognized RefDiscoveryPolicy");
_pending_list_uses_discovered_field = JDK_Version::current().pending_list_uses_discovered_field();
}
-void ReferenceProcessor::enable_discovery(bool verify_disabled, bool check_no_refs) {
+void ReferenceProcessor::enable_discovery(bool check_no_refs) {
#ifdef ASSERT
// Verify that we're not currently discovering refs
- assert(!verify_disabled || !_discovering_refs, "nested call?");
+ assert(!_discovering_refs, "nested call?");
if (check_no_refs) {
// Verify that the discovered lists are empty
verify_no_references_recorded();
}
@@ -961,56 +961,10 @@
}
return total_list_count;
}
-void ReferenceProcessor::clean_up_discovered_references() {
- // loop over the lists
- for (uint i = 0; i < _max_num_q * number_of_subclasses_of_ref(); i++) {
- if (TraceReferenceGC && PrintGCDetails && ((i % _max_num_q) == 0)) {
- gclog_or_tty->print_cr(
- "\nScrubbing %s discovered list of Null referents",
- list_name(i));
- }
- clean_up_discovered_reflist(_discovered_refs[i]);
- }
-}
-
-void ReferenceProcessor::clean_up_discovered_reflist(DiscoveredList& refs_list) {
- assert(!discovery_is_atomic(), "Else why call this method?");
- DiscoveredListIterator iter(refs_list, NULL, NULL);
- while (iter.has_next()) {
- iter.load_ptrs(DEBUG_ONLY(true /* allow_null_referent */));
- oop next = java_lang_ref_Reference::next(iter.obj());
- assert(next->is_oop_or_null(), err_msg("Expected an oop or NULL for next field at " PTR_FORMAT, p2i(next)));
- // If referent has been cleared or Reference is not active,
- // drop it.
- if (iter.referent() == NULL || next != NULL) {
- debug_only(
- if (PrintGCDetails && TraceReferenceGC) {
- gclog_or_tty->print_cr("clean_up_discovered_list: Dropping Reference: "
- INTPTR_FORMAT " with next field: " INTPTR_FORMAT
- " and referent: " INTPTR_FORMAT,
- (void *)iter.obj(), (void *)next, (void *)iter.referent());
- }
- )
- // Remove Reference object from list
- iter.remove();
- iter.move_to_next();
- } else {
- iter.next();
- }
- }
- NOT_PRODUCT(
- if (PrintGCDetails && TraceReferenceGC) {
- gclog_or_tty->print(
- " Removed %d Refs with NULL referents out of %d discovered Refs",
- iter.removed(), iter.processed());
- }
- )
-}
-
inline DiscoveredList* ReferenceProcessor::get_discovered_list(ReferenceType rt) {
uint id = 0;
// Determine the queue index to use for this object.
if (_discovery_is_mt) {
// During a multi-threaded discovery phase,
< prev index next >