RFR (M): JDK-8076314: Remove the static instance variable SharedHeap:: _sh
Bengt Rutisson
bengt.rutisson at oracle.com
Tue Mar 31 13:14:39 UTC 2015
Hi all,
Could I have a couple of reviews for this change?
http://cr.openjdk.java.net/~brutisso/8076314/webrev.00/
https://bugs.openjdk.java.net/browse/JDK-8076314
This is another step towards getting rid of SharedHeap. There used to be
an instance variable in SharedHeap to keep track of the actual instance
being used (which would be of type GenCollectedHeap or G1CollectedHeap).
The SharedHeap::heap() would return this value and was mostly used in
asserts.
I've changed so that we use the specific instance in most cases. That is
either GenCollectedHeap::heap() or G1CollectedHeap::heap().
A couple of other changes were needed to avoid the use of
SharedHeap::heap():
- The field _thread_holds_heap_lock_for_gc was only used by G1 and was
thus moved to G1CollectedHeap. It brought with it the method
heap_lock_held_for_gc() and I introduced set_heap_lock_held_for_gc() to
set the value. All of these are only used in asserts so I put them in an
#ifndef PRODUCT section. This also meant that I had to implement
doit_prologue() and doit_epilogue() for VM_G1OperationWithAllocRequest
to make sure that the state of _thread_holds_heap_lock_for_gc got set
correctly.
- The ageTable::compute_tenuring_threshold() method used the
SharedHeap::heap() only to look up the perf counters for GC. Instead of
having compute_tenuring_threshold() look that up I now pass in the
correct counters from the callers.
- The Threads::possibly_parallel_oops_do() method used the
SharedHeap::heap() only to check if we were to execute in parallel. I
moved the lookup of this to the callers and now just pass in an is_par
paramter.
- I simplified the VM_CGC_Operation::doit() a bit since even before my
change the heap returned could never be NULL.
Thanks,
Bengt
More information about the hotspot-gc-dev
mailing list