8225801: Shenandoah: Adjust SA to reflect recent forwarding pointer changes

Reviewed-by: shade
This commit is contained in:
Zhengyu Gu 2019-06-14 12:08:55 -04:00
parent 9a2f403a3f
commit 639c6026d9
2 changed files with 5 additions and 14 deletions
src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/shenandoah

@ -48,7 +48,6 @@ public class ShenandoahHeap extends CollectedHeap {
static private CIntegerField logMinObjAlignmentInBytes;
static private long regionPtrFieldSize;
static private long brookPtrSize;
static {
VM.registerVMInitializedObserver(new Observer() {
public void update(Observable o, Object data) {
@ -65,7 +64,6 @@ public class ShenandoahHeap extends CollectedHeap {
regions = type.getAddressField("_regions");
logMinObjAlignmentInBytes = type.getCIntegerField("_log_min_obj_alignment_in_bytes");
brookPtrSize = db.lookupIntConstant("HeapWordSize").longValue();
Type regionPtrType = db.lookupType("ShenandoahHeapRegion*");
regionPtrFieldSize = regionPtrType.getSize();
}
@ -74,11 +72,6 @@ public class ShenandoahHeap extends CollectedHeap {
super(addr);
}
@Override
public long oopOffset() {
return brookPtrSize;
}
@Override
public CollectedHeapName kind() {
return CollectedHeapName.SHENANDOAH;

@ -184,10 +184,10 @@ public class ShenandoahHeapRegion extends ContiguousSpace implements LiveRegions
if (regionStart == null) {
regionStart = start;
} else {
regionEnd = start.addOffsetTo(heap.oopOffset() + size);
regionEnd = start.addOffsetTo(size);
}
}
start = start.addOffsetTo(heap.oopOffset() + size);
start = start.addOffsetTo(size);
}
if (regionStart != null) {
@ -201,15 +201,13 @@ public class ShenandoahHeapRegion extends ContiguousSpace implements LiveRegions
}
private boolean hasForwardee(Address rawPtr) {
// Use Mark as a helper to read forward pointer value.
// Forwarding pointer is stored in mark word when it is flagged "marked"
Mark mark = new Mark(rawPtr);
Address forwardee = mark.valueAsAddress();
return (forwardee != rawPtr.addOffsetTo(heap.oopOffset()));
return mark.isMarked();
}
private long getObjectSize(Address rawPtr) {
// Dealing with a raw pointer, offsets forward pointer to find real Oop.
OopHandle handle = rawPtr.addOffsetToAsOopHandle(heap.oopOffset());
OopHandle handle = rawPtr.addOffsetToAsOopHandle(0);
Oop obj = null;
try {