RFR: 8134797: Remove explicit casts in CollectorPolicy hierarchy

Per Liden per.liden at oracle.com
Tue Sep 1 07:54:22 UTC 2015


Hi Kim,

On 2015-09-01 03:04, Kim Barrett wrote:
> Please review this change to eliminate explicit casts within the
> CollectorPolicy hierarchy.  All of the casts being eliminated were
> C-style casts; there are no C++ style casts in this hierarchy.
>
> For downcasts to GenCollectorPolicy* the policy was being obtained
> from a GenCollectedHeap, so we just use gen_policy instead of an
> unchecked downcast of collector_policy.
>
> For the remaining downcast (to ConcurrentMarkSweepPolicy*) we now
> assert the corresponding is_xxx_policy and use as_xxx_policy to
> perform the conversion.
>
> Changed the explicit upcasts to CollectorPolicy* to implict
> conversions.  For the problematic one, moved to a scope where
> G1CollectorPolicy is complete, so the now implicit conversion works.
> I'm kind of surprised that one didn't cause obvious problems.

Hmm, if it was incomplete, wouldn't the compiler have complained? When I 
look at the include dependencies it seems like g1CollectedHeap.o 
indirectly includes g1CollectorPolicy.hpp, so this shouldn't be a 
problem (but g1CollectorPolicy should be explicitly included). I have no 
strong opinion about moving the function to the .cpp file, but I would 
let if stay in the .hpp unless there's really a problem.

>
> CR:
> https://bugs.openjdk.java.net/browse/JDK-8134797
>
> Webrev:
> http://cr.openjdk.java.net/~kbarrett/8134797/webrev.00/

Looks good.

/Per

>
> Testing:
> jprt
>



More information about the hotspot-gc-dev mailing list