RFR: 8202082: Remove explicit CMS checks in CardTableBarrierSetAssembler

Kim Barrett kim.barrett at oracle.com
Tue Apr 24 02:15:13 UTC 2018


> On Apr 20, 2018, at 10:43 AM, Erik Österlund <erik.osterlund at oracle.com> wrote:
> 
> Hi,
> 
> 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/
> 
> Thanks,
> /Erik

------------------------------------------------------------------------------ 
src/hotspot/cpu/x86/gc/shared/cardTableBarrierSetAssembler_x86.cpp
121     if (ct->scanned_concurrently()) {

I think the correct test here is card_mark_must_follow_store.  See
my review of 8202083 for more details.

Similarly for the other platforms.

------------------------------------------------------------------------------ 
src/hotspot/cpu/x86/gc/shared/cardTableBarrierSetAssembler_x86.cpp
113     AddressLiteral cardtable((address)ctbs->card_table()->byte_map_base(), relocInfo::none);

[pre-existing]

Why isn't this using (address)disp rather than refetching the value.

------------------------------------------------------------------------------



More information about the hotspot-dev mailing list