RFR: 8233061: ZGC: Enforce memory ordering in segmented bit maps

Per Liden per.liden at oracle.com
Fri Nov 8 13:38:01 UTC 2019


On 10/28/19 4:53 PM, Erik Österlund wrote:
> Hi,
> 
> In ZGC, bitmaps are lazily cleared in a segmented fashion. In this 
> scheme, liveness is determined by looking at a counter, a segment bit 
> map and finally the flat bit map structure. The accesses for the various 
> stages need to be ordered properly. This patch sprinkles some 
> OrderAccess calls to enforce this ordering.
> 
> Out of curiosity, I disassembled libjvm.so with and without this patch 
> to see if the reordering has bitten us in practice on x86_64. 
> Fortunately, according to my analysis, it has not; we seem to have been 
> lucky. But there is a lot of machine code, so I could have missed 
> something. However, given that we now have an AArch64 port which is 
> definitely affected by this problem, and compilers really are free to do 
> whatever they want to in the future, it seems in order to enforce this 
> explicitly.
> 
> This patch depends on https://bugs.openjdk.java.net/browse/JDK-8233073 
> which exposes some memory ordering aware getters on BitMap. I did not 
> want to just wrap the existing API in ZGC, so I split that out to a 
> separate RFE.
> 
> CR:
> http://cr.openjdk.java.net/~eosterlund/8233061/webrev.00/

The rebased webrev.01 looks good.

/Per

> 
> Bug:
> https://bugs.openjdk.java.net/browse/JDK-8233061
> 
> Thanks,
> /Erik



More information about the hotspot-gc-dev mailing list