RFR: JDK-8211279: Verify missing object equals barriers
Roman Kennke
rkennke at redhat.com
Mon Oct 8 20:13:46 UTC 2018
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?
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-runtime-dev
mailing list