RFR: 8210064: ZGC: Introduce ZConcurrentRootsIterator for scanning a subset of strong IN_NATIVE roots concurrently

Erik Österlund erik.osterlund at oracle.com
Tue Sep 4 09:39:07 UTC 2018


Coleen pushed 8210155 before I pushed this. So now I need to wrap the 
CLDG iterations in a CLDG lock.
I made a patch that adds the lock and relaxes the locking assert 
appropriately so that the thread invoking the worker gang can take the 
lock. This implies that the worker threads will not own the lock, but 
that is okay.




On 2018-08-31 10:37, Erik Österlund wrote:
> Hi Per,
> On 2018-08-31 09:57, Per Liden wrote:
>> Hi Erik,
>> On 08/30/2018 10:46 AM, Erik Österlund wrote:
>>> Hi,
>>> We now have enough load barriers to support scanning of CLDs and JNI 
>>> handles concurrently. I propose to do that and move these root sets 
>>> out from ZRootsIterator, and hence the GC pause. They will be 
>>> scanned during concurrent marking (and heap iteration), but no 
>>> longer during relocation.
>>> I still perform ClassLoaderDataGraph::clear_claimed_marks() in the 
>>> pause because it seems cheap. But it can be moved out of the pause 
>>> when Coleen gets her new cool CLDG lock in.
>>> Webrev:
>>> http://cr.openjdk.java.net/~eosterlund/8210064/webrev.00/
>> I have some minor requests. Instead of listing them all, I attached a 
>> patch which addresses those.
>> The main thing is that I don't think ZDriver should know about 
>> "concurrent roots", just that it's doing "mark" or "mark continue", 
>> so I suggest we turn that into a "bool initial" argument to mark() 
>> instead of exposing a mark_concurrent_roots() function.
> Sure, that makes sense.
> Thanks for the review!
> /Erik
>> The other things are minor style adjustments.
>> /Per
>>> Bug:
>>> https://bugs.openjdk.java.net/browse/JDK-8210064
>>> Tested through hs-tier1-3.
>>> Thanks,
>>> /Erik

More information about the hotspot-gc-dev mailing list