RFR: 8202082: Remove explicit CMS checks in CardTableBarrierSetAssembler

Aleksey Shipilev shade at redhat.com
Mon Apr 23 08:37:39 UTC 2018


On 04/20/2018 04:43 PM, Erik Österlund wrote:
> In CardTableBarrierSetAssembler, we sometimes need fencing due to the card table being scanned
> concurrently when using CMS with pre-cleaning. Rather than explicitly checking for those CMS flags
> in the generic CardTableBarrierSetAssembler class, it is preferrable to check the CardTable
> scanned_concurrently() property which already precisely reflects that.
> 
> Bug:
> https://bugs.openjdk.java.net/browse/JDK-8202082
> 
> Webrev:
> http://cr.openjdk.java.net/~eosterlund/8202082/webrev.00/

This makes sense. Except that I see that scanned_concurrently is enabled only when
CMSPrecleaningEnabled is true:

CMSCardTable::CMSCardTable(MemRegion whole_heap) :
    CardTableRS(whole_heap, CMSPrecleaningEnabled /* scanned_concurrently */) {
}

...but old code inserts the barriers mostly with checking UseCMS only. I guess it does not matter
much for CMS that does not have G1-like concurrent refinement threads, and we really do care about
precleaning only?

Otherwise looks good!

-Aleksey



More information about the hotspot-dev mailing list