< 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 >