< prev index next >
src/share/vm/gc/shared/referenceProcessor.cpp
Print this page
rev 8961 : [mq]: diff-shenandoah.patch
*** 444,453 ****
--- 444,454 ----
assert(_discovered_addr && discovered->is_oop_or_null(),
err_msg("Expected an oop or NULL for discovered field at " PTR_FORMAT, p2i(discovered)));
_next = discovered;
_referent_addr = java_lang_ref_Reference::referent_addr(_ref);
_referent = java_lang_ref_Reference::referent(_ref);
+ assert(_referent == oopDesc::bs()->resolve_oop(_referent), "expect forwarded referent");
assert(Universe::heap()->is_in_reserved_or_null(_referent),
"Wrong oop found in java.lang.Reference object");
assert(allow_null_referent ?
_referent->is_oop_or_null()
: _referent->is_oop(),
*** 645,654 ****
--- 646,656 ----
ReferenceProcessor::clear_discovered_references(DiscoveredList& refs_list) {
oop obj = NULL;
oop next = refs_list.head();
while (next != obj) {
obj = next;
+ assert(obj == oopDesc::bs()->resolve_oop(obj), "expect forwarded obj");
next = java_lang_ref_Reference::discovered(obj);
java_lang_ref_Reference::set_discovered_raw(obj, NULL);
}
refs_list.set_head(NULL);
refs_list.set_length(0);
*** 1092,1102 ****
assert(RefDiscoveryPolicy == ReferenceBasedDiscovery,
"Unrecognized policy");
// Check assumption that an object is not potentially
// discovered twice except by concurrent collectors that potentially
// trace the same Reference object twice.
! assert(UseConcMarkSweepGC || UseG1GC,
"Only possible with a concurrent marking collector");
return true;
}
}
--- 1094,1104 ----
assert(RefDiscoveryPolicy == ReferenceBasedDiscovery,
"Unrecognized policy");
// Check assumption that an object is not potentially
// discovered twice except by concurrent collectors that potentially
// trace the same Reference object twice.
! assert(UseConcMarkSweepGC || UseG1GC || UseShenandoahGC,
"Only possible with a concurrent marking collector");
return true;
}
}
< prev index next >