RFR: 8166811: Missing memory fences between memory allocation and refinement

Kim Barrett kim.barrett at oracle.com
Sat Oct 29 23:26:21 UTC 2016


> On Oct 25, 2016, at 7:13 PM, Kim Barrett <kim.barrett at oracle.com> wrote:
> 
> Please review this change to address missing memory barriers needed to
> ensure ordering between allocation and refinement in G1.
> […]
> 
> CR:
> https://bugs.openjdk.java.net/browse/JDK-8166811
> 
> Webrev:
> http://cr.openjdk.java.net/~kbarrett/8166811/webrev.00/
> [Based on http://cr.openjdk.java.net/~kbarrett/8166607/webrev.02/]
> 

------------------------------------------------------------------------------ 
src/share/vm/gc/g1/g1RemSet.cpp
 581   // The region could be young.  Cards for young regions are dirtied,
 582   // so the post-barrier will filter them out.  However, that dirtying
 583   // is performed concurrently.  A write to a young object could occur
 584   // before the card has been dirtied, slipping past the filter.

This is a rewording of the comment that used to be here.  However, it
was not true even before these changes.  As part of JDK-8014555 we
mark young region cards with g1_young_card_val().  That's the change
set that added the storeload to the post-barrier.

I'm not quite sure what to do about this. The comment is currently
wrong.  However, the storeload is considered a problem, and there have
been various ideas discussed for eliminating it that might allow us to
go back to dirtying young cards.

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



More information about the hotspot-dev mailing list