RFR: 8210330: Make CLD claiming allow multiple claim bits

Per Liden per.liden at oracle.com
Tue Sep 4 14:50:23 UTC 2018

Hi Erik,

On 09/04/2018 04:45 PM, Erik Österlund wrote:
> Hi Coleen,
> Thank you for the review.
> Per wanted the following naming change: claim_value -> claim, claim() -> 
> try_claim(). And the strong_claim to be 3 instead of 1, so that one does 
> not accidentally set the wrong value when using it from ZGC (strong 
> claimed always implies final claimed too). Hope you are also okay with 
> that.

Thanks for adjusting that.

> Incremental:
> http://cr.openjdk.java.net/~eosterlund/8210330/webrev.00_01/
> Full:
> http://cr.openjdk.java.net/~eosterlund/8210330/webrev.01/

Looks good to me!


> Thanks,
> /Erik
> On 2018-09-04 14:29, coleen.phillimore at oracle.com wrote:
>> This change looks good to me.
>> Coleen
>> On 9/4/18 4:42 AM, Erik Österlund wrote:
>>> Hi,
>>> Today, the claim value of a CLD is logically a boolean, stored as an 
>>> int. Either a CLD is claimed, or not claimed. This is used by the GC 
>>> to see if oops_do can be skipped on the CLD, because its handles have 
>>> already been marked.
>>> With ZGC supporting concurrent class unloading, the CLD holder can be 
>>> marked finalizably reachable first, and afterwards strongly 
>>> reachable. This requires 2 claim bits in the CLD: one for claiming it 
>>> for strong marking of the oop handles, and one for finalizable marking.
>>> Rather than making a separate mechanism for ZGC only, I would like to 
>>> use these shared claim bits. I think this is a fascility that anyone 
>>> who has concurrent reference processing and concurrent class 
>>> unloading will need, it just happens to be that ZGC is the first GC 
>>> to do that in hotspot. I also have the hypothesis that this can be 
>>> beneficial for other uses such as the JFR leak profiler, which can 
>>> have its own claim bits, instead of clearing the claim bit, doing its 
>>> thing, and then restoring the claim bit to what it was before.
>>> As part of this change, I changed the "must_claim" boolean that is 
>>> passed around to instead take an int for the desired claim value, and 
>>> made it explicit and not implicit.
>>> Webrev:
>>> http://cr.openjdk.java.net/~eosterlund/8210330/webrev.00/
>>> Bug:
>>> https://bugs.openjdk.java.net/browse/JDK-8210330
>>> Thanks,
>>> /Erik

More information about the hotspot-dev mailing list