RFR (S) 8250589: Move Universe::_reference_pending_list into OopHandle
David Holmes
david.holmes at oracle.com
Mon Jul 27 23:06:48 UTC 2020
On 28/07/2020 12:10 am, coleen.phillimore at oracle.com wrote:
>
>
> On 7/27/20 9:24 AM, David Holmes wrote:
>> Hi Coleen,
>>
>> On 27/07/2020 11:05 pm, coleen.phillimore at oracle.com wrote:
>>> Summary: Use synchronization to reference the _reference_pending_list
>>> with OopHandle
>>
>> Why isn't ownership of the Heap_lock sufficient for the
>> synchronization any more?
>
> Multiple GC threads synchronize on this value, when one holds the
> Heap_lock:
>
> // Reference pending list manipulation. Access is protected by
> // Heap_lock. The getter, setter and predicate require the caller
> // owns the lock. Swap is used by parallel non-concurrent reference
> // processing threads, where some higher level controller owns
> // Heap_lock, so requires the lock is locked, but not necessarily by
> // the current thread.
>
> The comment is in the header file, explaining this.
Sorry I completely fixated on the lock assertion and missed the fact the
current code still does Atomic::xchg. The new code just internalises
that in the OopHandle logic. (that will teach me to take too quick a
look late at night)
Kim and Aleksey already pointed out the only things I was going to point
out.
Looks good.
Thanks,
David
> Thanks,
> Coleen
>
>>
>> Thanks,
>> David
>>
>> (and apologies as I'm done for the day so won't see your response till
>> morning.)
>>
>>> Tested with tier1-6 with 100% passed (no other existing test failures!)
>>>
>>> open webrev at
>>> http://cr.openjdk.java.net/~coleenp/2020/8250589.01/webrev
>>> bug link https://bugs.openjdk.java.net/browse/JDK-8250589
>>>
>>> Thanks,
>>> Coleen
>
More information about the hotspot-dev
mailing list