< prev index next >

src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/g1/HeapRegion.java

Print this page
rev 56812 : imported patch 8189737-stefanj-review

*** 43,55 **** // Mirror class for HeapRegion. Currently we don't actually include // any of its fields but only iterate over it. public class HeapRegion extends CompactibleSpace implements LiveRegionsProvider { ! // static int GrainBytes; ! static private CIntegerField grainBytesField; static private AddressField topField; private static long typeFieldOffset; private static long pointerSize; private HeapRegionType type; --- 43,57 ---- // Mirror class for HeapRegion. Currently we don't actually include // any of its fields but only iterate over it. public class HeapRegion extends CompactibleSpace implements LiveRegionsProvider { ! private static AddressField bottomField; static private AddressField topField; + private static AddressField endField; + + static private CIntegerField grainBytesField; private static long typeFieldOffset; private static long pointerSize; private HeapRegionType type;
*** 62,73 **** } static private synchronized void initialize(TypeDataBase db) { Type type = db.lookupType("HeapRegion"); ! grainBytesField = type.getCIntegerField("GrainBytes"); topField = type.getAddressField("_top"); typeFieldOffset = type.getField("_type").getOffset(); pointerSize = db.lookupType("HeapRegion*").getSize(); } --- 64,78 ---- } static private synchronized void initialize(TypeDataBase db) { Type type = db.lookupType("HeapRegion"); ! bottomField = type.getAddressField("_bottom"); topField = type.getAddressField("_top"); + endField = type.getAddressField("_end"); + + grainBytesField = type.getCIntegerField("GrainBytes"); typeFieldOffset = type.getField("_type").getOffset(); pointerSize = db.lookupType("HeapRegion*").getSize(); }
*** 80,106 **** Address typeAddr = (addr instanceof OopHandle) ? addr.addOffsetToAsOopHandle(typeFieldOffset) : addr.addOffsetTo(typeFieldOffset); type = (HeapRegionType)VMObjectFactory.newObject(HeapRegionType.class, typeAddr); } ! public Address top() { ! return topField.getValue(addr); ! } @Override public List<MemRegion> getLiveRegions() { List<MemRegion> res = new ArrayList<>(); res.add(new MemRegion(bottom(), top())); return res; } ! @Override public long used() { return top().minus(bottom()); } - @Override public long free() { return end().minus(top()); } public boolean isFree() { --- 85,115 ---- Address typeAddr = (addr instanceof OopHandle) ? addr.addOffsetToAsOopHandle(typeFieldOffset) : addr.addOffsetTo(typeFieldOffset); type = (HeapRegionType)VMObjectFactory.newObject(HeapRegionType.class, typeAddr); } ! public Address bottom() { return bottomField.getValue(addr); } ! public Address top() { return topField.getValue(addr); } ! public Address end() { return endField.getValue(addr); } @Override public List<MemRegion> getLiveRegions() { List<MemRegion> res = new ArrayList<>(); res.add(new MemRegion(bottom(), top())); return res; } ! /** Returns a subregion of the space containing all the objects in ! the space. */ ! public MemRegion usedRegion() { ! return new MemRegion(bottom(), end()); ! } ! public long used() { return top().minus(bottom()); } public long free() { return end().minus(top()); } public boolean isFree() {
< prev index next >