RFR: 8072817: CardTableExtension kind() should be BarrierSet::CardTableExtension
kim.barrett at oracle.com
Thu Aug 27 17:51:00 UTC 2015
Still looking for reviews.
On Aug 19, 2015, at 1:42 PM, Kim Barrett <kim.barrett at oracle.com> wrote:
> Please review this change to finally properly integrate the
> BarrierSet::CardTableExtension barrier set kind. This has been
> deferred for a long time; there was, until recently, a comment in
> CardTableExtension that having kind() return
> BarrierSet::CardTableExtension was "too risky for the 4/10/02
> Much of the work involved in supporting the CardTableExtension tag had
> been done long ago. The remaining work involved actually hooking it
> up. The key missing step was to give CardTableModRefBSForCTRS its own
> tag (to distinguish from CardTableExtension) and switch to using that
> tag where needed. The needed tag (BarrierSet::CardTableForRS) was
> defined in the fix for JDK-8069016. This change makes use of it.
> This involved the following steps:
> 1. Most occurrences of BarrierSet::CardTableModRef are now
> BarrierSet::CardTableForRS. Occurrences of BarrierSet::CardTableForRS
> and BarrierSet::CardTableExtension are now nearly always paired.
> Exceptions are in the constructors of the corresponding classes and in
> the associated barrier_set_cast support.
> 2. The tests for kind() == BarrierSet::CardTableModRef that were
> controlling the devirtualization of write_ref_field_pre,
> write_ref_field, and write_region now test for either
> BarrierSet::CardTableForRS or BarrierSet::CardTableExtension. The
> FakeRttiSupport class was extended to improve the new test.
> 3. The remaining small number of tests for kind() ==
> BarrierSet::CardTableModRef are now tests for
> is_a(BarrierSet::CardTableModRef). These are places where we really do
> allow a CardTableModRefBS and don't care which subclass; all of these
> involve access to the card table. This now includes G1 barrier sets in
> a couple of places where they were previously inappropriately or
> unnecessarily excluded.
> 4. The CardTableModRefBSForCTRS class now specifies its kind tag be
> BarrierSet::CardTableForRS. The CardTableExtension class now specifies
> its kind tag be BarrierSet::CardTableExtension. The extra
> FakeRttiSupport constructor that existed to support the old kludge for
> those classes has been removed.
> Also removed unused CollectorPolicy::barrier_set_name.
> aurora ad hoc GC/Runtime Nightly, quicktests, tonga, jtreg
More information about the hotspot-gc-dev