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 10:17:39 UTC 2018


Hi Per,

On 2018-09-04 11:47, Per Liden wrote:
> Hi Erik,
>
> On 09/04/2018 11:39 AM, Erik Österlund wrote:
>> Hi,
>>
>> 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.
>>
>> Incremental:
>> http://cr.openjdk.java.net/~eosterlund/8210064/webrev.01_02/
>>
>> Full:
>> http://cr.openjdk.java.net/~eosterlund/8210064/webrev.02/
>
> Looks good. Just one small thing. It seems the old 
> assert_locked_or_safepoint() can now be expressed as 
> assert_locked_or_safepoint_weak() plus some extra conditions.

Thanks for the review. Unfortunately it looks like I can't express the 
strong one with the weak one as it has early exit code, and I need to 
change the weak one to return a boolean to make that work. Oh well.

Thanks,
/Erik

> /Per
>
>>
>> Thanks,
>> /Erik
>>
>> 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