8225801: Shenandoah: Adjust SA to reflect recent forwarding pointer changes
Reviewed-by: shade
This commit is contained in:
parent
9a2f403a3f
commit
639c6026d9
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 {
|
||||
|
Loading…
x
Reference in New Issue
Block a user