< prev index next >

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

Print this page

        

@@ -33,10 +33,12 @@
 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,10 +46,12 @@
     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,14 +67,22 @@
 
     private ZForwardingTable forwarding() {
         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);
         long from_index = (from_offset - start()) >> object_alignment_shift();
         ZForwardingTableEntry entry = forwarding().find(from_index);
< prev index next >