RFR: 8337511: Implement JEP 404: Generational Shenandoah (Experimental) [v7]

William Kemper wkemper at openjdk.org
Wed Nov 20 19:59:42 UTC 2024


On Tue, 19 Nov 2024 23:56:56 GMT, William Kemper <wkemper at openjdk.org> wrote:

>> src/hotspot/share/gc/shenandoah/shenandoahReferenceProcessor.cpp line 455:
>> 
>>> 453:     // Note: would be sufficient to mark only the card that holds the start of this Reference object.
>>> 454:     heap->old_generation()->card_scan()->mark_range_as_dirty(cast_from_oop<HeapWord*>(reference), reference->size());
>>> 455:   }
>> 
>> Two things:
>>  a) This sounds like `card_table_barrier(reference, raw_referent)`? Since this code is getting called for every dropped reference, just checking a `ShenandoahCardBarrier` flag sounds more efficient. 
>>  b) Is there a point in dirtying up to `reference->size()`?
>
> Will test this.

https://bugs.openjdk.org/browse/JDK-8344640

>> src/hotspot/share/gc/shenandoah/shenandoahVerifier.cpp line 657:
>> 
>>> 655:           _generation(nullptr) {
>>> 656:     if (_options._verify_marked == ShenandoahVerifier::_verify_marked_complete_satb_empty) {
>>> 657:       Threads::change_thread_claim_token();
>> 
>> It is fairly odd to see Verifier touching the claim token, since the bug _may be_ somewhere in parallel thread oop iteration infra. I think it is fine to just use `Threads::threads_do` (non-parallel version), which AFAIU does not require token modifications.
>
> Will test this.

https://bugs.openjdk.org/browse/JDK-8344638

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/21273#discussion_r1850900559
PR Review Comment: https://git.openjdk.org/jdk/pull/21273#discussion_r1850901137


More information about the serviceability-dev mailing list