< prev index next >

src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZPage.java

Print this page

        

*** 33,42 **** --- 33,44 ---- import sun.jvm.hotspot.types.TypeDataBase; 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 { VM.registerVMInitializedObserver((o, d) -> initialize(VM.getVM().getTypeDataBase())); }
*** 44,53 **** --- 46,57 ---- static private synchronized void initialize(TypeDataBase db) { Type type = db.lookupType("ZPage"); typeField = type.getCIntegerField("_type"); virtualFieldOffset = type.getField("_virtual").getOffset(); + topField = type.getCIntegerField("_top"); + refcountField = type.getCIntegerField("_refcount"); forwardingFieldOffset = type.getField("_forwarding").getOffset(); } public ZPage(Address addr) { super(addr);
*** 63,76 **** private ZForwardingTable forwarding() { return (ZForwardingTable)VMObjectFactory.newObject(ZForwardingTable.class, addr.addOffsetTo(forwardingFieldOffset)); } ! private long start() { return virtual().start(); } Address forward_object(Address from) { // Lookup address in forwarding table long from_offset = ZAddress.offset(from); long from_index = (from_offset - start()) >> object_alignment_shift(); ZForwardingTableEntry entry = forwarding().find(from_index); --- 67,88 ---- private ZForwardingTable forwarding() { return (ZForwardingTable)VMObjectFactory.newObject(ZForwardingTable.class, addr.addOffsetTo(forwardingFieldOffset)); } ! 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); long from_index = (from_offset - start()) >> object_alignment_shift(); ZForwardingTableEntry entry = forwarding().find(from_index);
< prev index next >