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