< prev index next >

src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/ObjectHeap.java

Print this page

        

@@ -34,10 +34,11 @@
 import sun.jvm.hotspot.debugger.*;
 import sun.jvm.hotspot.gc.cms.*;
 import sun.jvm.hotspot.gc.shared.*;
 import sun.jvm.hotspot.gc.epsilon.*;
 import sun.jvm.hotspot.gc.g1.*;
+import sun.jvm.hotspot.gc.shenandoah.*;
 import sun.jvm.hotspot.gc.parallel.*;
 import sun.jvm.hotspot.gc.z.*;
 import sun.jvm.hotspot.memory.*;
 import sun.jvm.hotspot.runtime.*;
 import sun.jvm.hotspot.types.*;

@@ -243,17 +244,19 @@
           ConcurrentMarkSweepGeneration concGen = (ConcurrentMarkSweepGeneration)genOld;
           cmsSpaceOld = concGen.cmsSpace();
       }
     }
 
+    int cell_header_size = heap.cell_header_size();
+
     for (int i = 0; i < liveRegions.size(); i += 2) {
       Address bottom = (Address) liveRegions.get(i);
       Address top    = (Address) liveRegions.get(i+1);
 
       try {
         // Traverses the space from bottom to top
-        OopHandle handle = bottom.addOffsetToAsOopHandle(0);
+        OopHandle handle = bottom.addOffsetToAsOopHandle(cell_header_size);
 
         while (handle.lessThan(top)) {
         Oop obj = null;
 
           try {

@@ -286,11 +289,11 @@
                   }
           }
           if ( (cmsSpaceOld != null) && cmsSpaceOld.contains(handle)) {
               handle = handle.addOffsetToAsOopHandle(CompactibleFreeListSpace.adjustObjectSizeInBytes(obj.getObjectSize()) );
           } else {
-              handle = handle.addOffsetToAsOopHandle(obj.getObjectSize());
+              handle = handle.addOffsetToAsOopHandle(obj.getObjectSize() + cell_header_size);
           }
         }
       }
       catch (AddressException e) {
         // This is okay at the top of these regions

@@ -365,10 +368,13 @@
        PSOldGen oldGen = psh.oldGen();
        addLiveRegions("old ", oldGen.objectSpace().getLiveRegions(), liveRegions);
     } else if (heap instanceof G1CollectedHeap) {
         G1CollectedHeap g1h = (G1CollectedHeap) heap;
         g1h.heapRegionIterate(lrc);
+    } else if (heap instanceof ShenandoahHeap) {
+        ShenandoahHeap sh = (ShenandoahHeap) heap;
+        sh.heapRegionIterate(lrc);
     } else if (heap instanceof ZCollectedHeap) {
        // Operation (currently) not supported with ZGC. Print
        // a warning and leave the list of live regions empty.
        System.err.println("Warning: Operation not supported with ZGC");
     } else if (heap instanceof EpsilonHeap) {
< prev index next >