Move GCPolicyCounters out from the CollectorPolicy base class to GenCollectorPolicy.
For the G1 code it's more appropriately located in the G1Policy object instead of the G1CollectorPolicy and ParallelScavenge does not even initialize the field in its CollectorPolicy instance.
All callers of the CollectorPolicy::counters method are in GenCollectedHeap related code and are adjusted to access it through the GCH::gen_policy method.
For the G1 code it's more appropriately located in the G1Policy object instead of the G1CollectorPolicy and ParallelScavenge does not even initialize the field in its CollectorPolicy instance.
All callers of the CollectorPolicy::counters method are in GenCollectedHeap related code and are adjusted to access it through the GCH::gen_policy method.