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