--- a/src/hotspot/share/gc/parallel/psPromotionManager.cpp Fri May 25 14:10:21 2018 -0700
+++ b/src/hotspot/share/gc/parallel/psPromotionManager.cpp Sat May 26 03:11:50 2018 -0400
@@ -442,7 +442,7 @@
if (PSScavenge::should_scavenge(referent_addr)) {
ReferenceProcessor* rp = PSScavenge::reference_processor();
if (rp->discover_reference(obj, klass->reference_type())) {
- // reference already enqueued, referent and next will be traversed later
+ // reference discovered, referent will be traversed later.
klass->InstanceKlass::oop_ps_push_contents(obj, pm);
return;
} else {
@@ -450,20 +450,10 @@
pm->claim_or_forward_depth(referent_addr);
}
}
- // Treat discovered as normal oop, if ref is not "active",
- // i.e. if next is non-NULL.
- T* next_addr = (T*)java_lang_ref_Reference::next_addr_raw(obj);
- T next_oop = RawAccess<>::oop_load(next_addr);
- if (!CompressedOops::is_null(next_oop)) { // i.e. ref is not "active"
- T* discovered_addr = (T*)java_lang_ref_Reference::discovered_addr_raw(obj);
- log_develop_trace(gc, ref)(" Process discovered as normal " PTR_FORMAT, p2i(discovered_addr));
- if (PSScavenge::should_scavenge(discovered_addr)) {
- pm->claim_or_forward_depth(discovered_addr);
- }
- }
- // Treat next as normal oop; next is a link in the reference queue.
- if (PSScavenge::should_scavenge(next_addr)) {
- pm->claim_or_forward_depth(next_addr);
+ // Treat discovered as normal oop
+ T* discovered_addr = (T*)java_lang_ref_Reference::discovered_addr_raw(obj);
+ if (PSScavenge::should_scavenge(discovered_addr)) {
+ pm->claim_or_forward_depth(discovered_addr);
}
klass->InstanceKlass::oop_ps_push_contents(obj, pm);
}