RFR: 8237637: Remove dubious type conversions from oop
coleen.phillimore at oracle.com
coleen.phillimore at oracle.com
Wed Jan 22 13:52:37 UTC 2020
I really like this and have only started clicking.
174 template <class T> inline T cast_from_oop(oop o) {
175 return (T)(CHECK_UNHANDLED_OOPS_ONLY((void*))o);
176 }
Why did you leave void* as a conversion? Can you define
cast_from_oop<> to not need it?
Thanks,
Coleen
On 1/22/20 8:33 AM, Stefan Karlsson wrote:
> Hi all,
>
> Please review this patch to remove some dubious type conversions from
> oop.
>
> https://bugs.openjdk.java.net/browse/JDK-8237637
>
> When running with fastdebug and CHECK_UNHANDLED_OOPS oop is not a
> simple oopDesc* but a class. This class has a number of type
> conversions with the comment:
>
> // Explict user conversions
>
> However, these are not only *explicit* conversions. They can be
> invoked implicitly as well.
>
> I propose that we get rid of most of these and only leave these two:
> operator void* () const
> operator oopDesc* () const
>
> so that we get better type safety in the code.
>
> I've split this up into multiple webrevs to make it easier to review:
>
> https://cr.openjdk.java.net/~stefank/8237637/webrev.01/00.promotedObject/
> https://cr.openjdk.java.net/~stefank/8237637/webrev.01/01.oopStar/
> https://cr.openjdk.java.net/~stefank/8237637/webrev.01/02.jobject/
> https://cr.openjdk.java.net/~stefank/8237637/webrev.01/03.address/
> https://cr.openjdk.java.net/~stefank/8237637/webrev.01/03.address/
> https://cr.openjdk.java.net/~stefank/8237637/webrev.01/05.voidStarVolatiles/
>
> https://cr.openjdk.java.net/~stefank/8237637/webrev.01/06.heapWord/
>
> All changes combined:
> https://cr.openjdk.java.net/~stefank/8237637/webrev.01/all/
>
> Testing: builds pass, tier1-3 running
>
> Thanks,
> StefanK
>
More information about the hotspot-dev
mailing list