--- old/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZPage.java 2018-07-19 22:49:39.449540005 +0900 +++ new/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZPage.java 2018-07-19 22:49:39.242538607 +0900 @@ -35,6 +35,8 @@ public class ZPage extends VMObject { private static CIntegerField typeField; private static long virtualFieldOffset; + private static CIntegerField topField; + private static CIntegerField refcountField; private static long forwardingFieldOffset; static { @@ -46,6 +48,8 @@ typeField = type.getCIntegerField("_type"); virtualFieldOffset = type.getField("_virtual").getOffset(); + topField = type.getCIntegerField("_top"); + refcountField = type.getCIntegerField("_refcount"); forwardingFieldOffset = type.getField("_forwarding").getOffset(); } @@ -65,10 +69,18 @@ return (ZForwardingTable)VMObjectFactory.newObject(ZForwardingTable.class, addr.addOffsetTo(forwardingFieldOffset)); } - private long start() { + public long start() { return virtual().start(); } + public long top() { + return topField.getJLong(addr); + } + + public int refcount() { + return topField.getJInt(addr); + } + Address forward_object(Address from) { // Lookup address in forwarding table long from_offset = ZAddress.offset(from);