RFR: JDK-8211279: Verify missing object equals barriers (original) (raw)
Roman Kennke rkennke at redhat.com
Mon Oct 8 16:32:25 UTC 2018
- Previous message: RFR: JDK-8211279: Verify missing object equals barriers
- Next message: RFR: JDK-8211279: Verify missing object equals barriers
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Hi Aleksey,
Thanks for reviewing!
On 10/03/2018 03:25 PM, Roman Kennke wrote:
This addresses all the issues mentioned above: http://cr.openjdk.java.net/~rkennke/JDK-8211279/webrev.02/ I think this is a cute way to get things going. ) 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?
*) So, if CHECKUNHANDLEDOOPS 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 CHECKUNHANDLEDOOPS 134 virtual bool oopequalsoperatorallowed() { return true; } 135 #endif 136 ... 58 bool oop::operator==(const oop o) const { 59 assert(BarrierSet::barrierset()->oopequalsoperatorallowed(), "Not allowed"); 60 return obj() == o.obj(); 61 }
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?
Roman
- Previous message: RFR: JDK-8211279: Verify missing object equals barriers
- Next message: RFR: JDK-8211279: Verify missing object equals barriers
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]