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