RFR: 8047818: G1 HeapRegions can no longer be ContiguousSpaces

Mikael Gerdin mikael.gerdin at oracle.com
Mon Jun 23 14:26:03 UTC 2014


Hi!

When G1 is modified to unload classes without doing full collections the old 
HeapRegions can contain unparseable objects. This makes ContiguousSpace 
unsuitable as a base class for HeapRegion since it assumes that all objects 
below _top are parseable.

Modify G1OffsetTableContigSpace to implement allocation with a separate _top 
and reimplement some Space pure virtuals to make object iteration work as 
expected.

This change is the last part of a set of 4 changes: 8047818, 8047819, 8047820, 
8047821 which are needed to refactor the HeapRegion class and its superclasses 
in order to simplify the G1 class unloading change which is coming.
This change depends on the 19, 20 and 21 changes.

Bug:
https://bugs.openjdk.java.net/browse/JDK-8047818
Webrev:
http://cr.openjdk.java.net/~mgerdin/8047818/webrev/

Notes:
The moving of set_offset_range is due to an introduced circular dependency 
between g1BlockOffsetTable.inline.hpp and heapRegion.inline.hpp

Thanks
/Mikael




More information about the hotspot-gc-dev mailing list