RFR: 8138888: Remove ExtendedOopClosure::apply_to_weak_ref_discovered_field
Stefan Johansson
stefan.johansson at oracle.com
Tue Oct 6 13:41:54 UTC 2015
Hi all,
Please review view this patch to address:
https://bugs.openjdk.java.net/browse/JDK-8138888
Webrev:
http://cr.openjdk.java.net/~sjohanss/8138888/hotspot.00/
Summary:
When working on JDK-8138737 I noticed that the handling of the reference
fields next, discovered and referent is treated differently by depending
on which closure is being applied. This is controlled by
ExtendedOopClosure::apply_to_weak_ref_discovered_field. I could not find
any real good reason for this except that there was a check that looked
like this:
// Treat discovered as normal oop, if ref is not "active" (next non-NULL)
if (!oopDesc::is_null(next_oop) && contains(disc_addr)) {
Because of this check (that I and some other folks I've discussed this
with can't understand) some closures need to override
apply_to_weak_ref_discovered_field to ensure that the closure is applied
correctly. By removing this check on next, I believe we can get rid of
apply_to_weak_ref_discovered_field as well. I've read the code and done
testing without being able to find a case where this won't work.
This change will help when doing JDK-8138737, because the closure in
that patch need to be applied to all fields.
Testing:
* JPRT
* RBT and Aurora runs with JTREG, tonga and BigApps
* Locally run gc-test-suite with G1
Thanks,
Stefan
More information about the hotspot-gc-dev
mailing list