RFR: 8284734: Undiscovered references if using ReferentBasedDiscovery

Albert Mingkun Yang ayang at openjdk.java.net
Mon Apr 18 10:42:41 UTC 2022


On Mon, 18 Apr 2022 08:57:05 GMT, Kim Barrett <kbarrett at openjdk.org> wrote:

>> Small change of fixing a crash if using `ReferentBasedDiscovery`.
>> 
>> Test: hotspot_gc
>
> src/hotspot/share/gc/shared/referenceProcessor.cpp line 998:
> 
>> 996:   }
>> 997: 
>> 998:   HeapWord* const discovered_addr = java_lang_ref_Reference::discovered_addr_raw(obj);
> 
> The lookup of discovered_addr could be moved later to where it's used.

I will do a clean-up PR afterwards. Thank you for the suggestion.

> src/hotspot/share/gc/shared/referenceProcessor.cpp line 1005:
> 
>> 1003:     // following two cases:
>> 1004:     //  1. `G1CMTask::make_reference_grey` can push the same oop twice onto the
>> 1005:     //     mark stack.
> 
> I think make_reference_grey uses the next-mark-bits to avoid pushing an oop onto the mark stack multiple times.

True, but due to the use of `_finger` (bounded mark-stack), duplicate oops can still exist. The comment in that method covers that.

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

PR: https://git.openjdk.java.net/jdk/pull/8196



More information about the hotspot-gc-dev mailing list