< prev index next >

src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/g1/G1HeapRegionTable.java

Print this page

        

@@ -132,13 +132,13 @@
 
     public G1HeapRegionTable(Address addr) {
         super(addr);
     }
 
-    public HeapRegion getByAddress(Address addr) {
-        long biasedIndex = addr.asLongValue() >>> shiftBy();
+    public HeapRegion getByAddress(Address target) {
+        Address arrayAddr = biasedBaseField.getValue(addr);
+        long biasedIndex = target.asLongValue() >>> shiftBy();
         long offset = biasedIndex * HeapRegion.getPointerSize();
-        Address result = (addr instanceof OopHandle) ? addr.addOffsetToAsOopHandle(offset)
-                                                     : addr.addOffsetTo(offset);
-        return new HeapRegion(result);
+        Address regionAddr = arrayAddr.getAddressAt(offset);
+        return (HeapRegion)VMObjectFactory.newObject(HeapRegion.class, regionAddr);
     }
 }
< prev index next >