RFR: 8237637: Remove dubious type conversions from oop

Stefan Karlsson stefan.karlsson at oracle.com
Wed Jan 22 14:33:07 UTC 2020


On 2020-01-22 14:52, coleen.phillimore at oracle.com wrote:
> 
> 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?

I thought it made sense to allow it to be converted to void*, but I now 
see that it already works because it can be converted through oopDesc: 
oop -> oopDesc* -> void*.

I removed the following line and compiled locally:
   operator void* () const             { return (void *)obj(); }

I'll make sure that it compiles with other compilers as well.

Thanks,
StefanK

> 
> 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