RFR 8221435: Shenandoah should not mark through weak roots

Zhengyu Gu zgu at redhat.com
Tue Mar 26 19:59:12 UTC 2019



On 3/26/19 3:31 PM, Roman Kennke wrote:
> 
> 
>>> *) I think the WeakProcessor::weak_oops_do is deliberately called 
>>> with serial version when
>>> ShenandoahWeakAssertNotForwardedClosure is handled. Maybe that 
>>> prolongs weak root handling
>>> unnecessarily? Anyhow, this comment needs to be moved to new code:
>>
>> I was puzzled by this also. It may be the case in early days, when 
>> there are few oop storages? seems we definitely can benefit parallel 
>> version, because there are more oop storages to process.
>>
>> Roman, do you recall the reason why it was done this way?
>>
>> ShenandoahWeakAssertNotForwardedClosure is debug only closure, 
>> surround the body with ifdef.
> 
> Well, as you say, it's debug-only, so shouldn't matter performance-wise. 
> Except, as you say, it should be #ifdef ASSERT. It wasn't #ifdef'd 
> before? WTF?
> 
> Other than that, looks good. Maybe we should wait until we have fixes for:
> 
> https://bugs.openjdk.java.net/browse/JDK-8221102
> and
> https://bugs.openjdk.java.net/browse/JDK-8220671

Okay, I can hold off for them.

-Zhengyu

> 
> in sh/jdk, so that we have a stable testing base?
> 
> Roman
> 
>>>   709     // Process leftover weak oops: update them, if needed 
>>> (using parallel version),
>>>   710     // or assert they do not need updating (using serial 
>>> version) otherwise.
>>>   711     // Weak processor API requires us to visit the oops, even 
>>> if we are not doing
>>>   712     // anything to them.
>>>
>>> *) The distinction between 
>>> ShenandoahRootProcessor::process_all_roots, ::update_all_roots,
>>> ::traversal_update_all_roots might be better? (I cannot see the 
>>> better factoring right away, though).
>>>
>> There are inconsistencies in traversal, I am looking into them in 
>> follow up RFE, will address this there.
>>
>> Thanks,
>>
>> -Zhengyu
>>
>>
>>> -Aleksey
>>>


More information about the hotspot-gc-dev mailing list