RFR: JDK-8211279: Verify missing object equals barriers

Per Liden per.liden at oracle.com
Wed Oct 10 06:02:27 UTC 2018


Hi Roman,

On 10/08/2018 10:13 PM, Roman Kennke wrote:
> Thanks, Aleksey, for the review.
> 
> I've sent the patch through jdk/submit, and it came back PASSED.
> 
> Per, Erik, everybody else, what do you think about the last changeset?
> Can you live with it?

I can live with it.

cheers,
Per

> 
> Thanks,
> Roman
> 
> 
>> On 10/08/2018 06:32 PM, Roman Kennke wrote:
>>>> *) I always get a bit uneasy seeing the casts to (void*) like here:
>>>>
>>>>   413   static bool equals(oop o1, oop o2) { return (void*)o1 == (void*)o2; }
>>>>
>>>>   ...but I think this comparison is well-defined in C++ with the semantics we want.
>>>
>>> What would you suggest? reinterpret_cast<void*>(..) better?
>>
>> No, from my reading of C++ spec casting to void* is safe here. Just thinking out loud.
>>
>>>> *) So, if CHECK_UNHANDLED_OOPS is not defined, this declaration is inaccessible, and asserts that
>>>> use it would fail to compile? I think this ifdef is not needed here, but rather it should be around
>>>> the asserts in oop::operator== and !=?
>>>>
>>>>   133 #ifdef CHECK_UNHANDLED_OOPS
>>>>   134   virtual bool oop_equals_operator_allowed() { return true; }
>>>>   135 #endif
>>>>   136
>>>
>>> It already *is* around the whole (oop class) declaration in
>>> oopsHierarchy.hpp, that's the only user of the check so I put this under
>>> #ifdef CHECK_UNHANDLED_OOPS too, but I can remove this #ifdef if you
>>> prefer. Let me know?
>>
>> Ah! Missed that. No, this is fine then.
>>
>> -Aleksey
>>
> 



More information about the hotspot-gc-dev mailing list