RFR (L, but tedious) 8188220: Remove Atomic::*_ptr() uses and overloads from hotspot
Robbin Ehn
robbin.ehn at oracle.com
Wed Oct 11 08:12:04 UTC 2017
On 10/11/2017 10:09 AM, David Holmes wrote:
> On 11/10/2017 5:45 PM, Erik Österlund wrote:
>
> Removing the operation is a different argument to renaming it. Most of the above argues for removing it. :)
+1 on removing
Thanks, Robbin
>
> Cheers,
> David
> -----
>
>> I have not reviewed this completely yet - thought I'd wait with that until we agree about replace_if_null, if that is okay.
>>
>> Thanks,
>> /Erik
>>
>> On 2017-10-11 05:55, David Holmes wrote:
>>> On 11/10/2017 1:43 PM, Kim Barrett wrote:
>>>>> On Oct 10, 2017, at 6:01 PM, coleen.phillimore at oracle.com wrote:
>>>>>
>>>>> Summary: With the new template functions these are unnecessary.
>>>>>
>>>>> 2. renamed Atomic::replace_if_null to Atomic::cmpxchg_if_null. I disliked the first name because it's not explicit from the callers that there's an underlying cas.
>>>>> If people want to fight, I'll remove the function and use cmpxchg because there are only a couple places where this is a little nicer.
>>>>
>>>> I'm still looking at other parts, but I want to respond to this now.
>>>>
>>>> I object to this change. I think the proposed new name is confusing,
>>>> suggesting there are two different comparisons involved.
>>>>
>>>> I originally called it something else that I wasn't entirely happy
>>>> with. When David suggested replace_if_null I quickly adopted that as
>>>> I think that name exactly describes what it does. In particular, I
>>>> think "atomic replace if" pretty clearly suggests a test-and-set /
>>>> compare-and-swap type of operation.
>>>
>>> I totally agree. It's an Atomic operation, the implementation will involve something atomic, it doesn't matter if it is cmpxchg or something else. The name
>>> replace_if_null describes exactly what the function does - it doesn't have to describe how it does it.
>>>
>>> David
>>> -----
>>>
>>>> Further, I think any name involving "cmpxchg" is problematic because
>>>> the result of this operation is intentionally different from cmpxchg,
>>>> in order to better support the primary use-case, which is lazy
>>>> initialization.
>>>>
>>>> I also object to your alternative suggestion of removing the operation
>>>> entirely and just using cmpxchg directly instead. I don't recall how
>>>> many occurrences there presently are, but I suspect more could easily
>>>> be added; it's part of a lazy initialization pattern similar to DCLP
>>>> but without the locks.
>>>>
>>
More information about the hotspot-dev
mailing list