RFR: 8139341: Hide ExtendedOopClosure::_ref_processor

Kim Barrett kim.barrett at oracle.com
Mon Oct 12 00:39:56 UTC 2015


Please review this accessibility change to the
ExtendedOopClosure::_ref_processor data member from public to private.

ExtendedOopClosure::ref_processor is a new public reader function.

ExtendedOopClosure::set_ref_processor_internal is a new protected
writer function.  The name is chosen to emphasize that it's use is
rare and unusual; usually the reference processor should be set via a
constructor argument.

A couple of CMS closures were setting the reference processor
explicitly in the constructor, and now use set_ref_processor_internal
for that.  This pre-existing behavior is a workaround for some class
hierarchy issues that are out of scope for this change.

G1ParScanClosure::set_ref_processor is a new public writer function
which forwards to set_ref_processor_internal.  This supports the
addition and removal of the refproc from the closure embedded in the
G1ParScanThreadState.  I think that might really be a different
enable/disable_discovery and should be done using those functions
rather than setting the closure's refproc, but I want to pursue that
as a separate change.

MarkAndPushClosure::set_ref_processor is a new public writer function
which forwards to set_ref_processor_internal.  This supports the
static construction of this MarkSweep closure before some of the other
data structures (like the refproc) have been constructed.

CR:
https://bugs.openjdk.java.net/browse/JDK-8139341

Webrev:
http://cr.openjdk.java.net/~kbarrett/8139341/webrev.00/
Note that this webrev is based on the changes for the in-review
http://cr.openjdk.java.net/~kbarrett/8139200/webrev.00/

Testing:
JPRT




More information about the hotspot-gc-dev mailing list