RFR: JDK-8211279: Verify missing object equals barriers

Aleksey Shipilev shade at redhat.com
Mon Oct 8 16:34:46 UTC 2018


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

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <http://mail.openjdk.java.net/pipermail/hotspot-gc-dev/attachments/20181008/20399aa3/signature.asc>


More information about the hotspot-gc-dev mailing list