Mercurial > hg > truffle
diff agent/src/share/classes/sun/jvm/hotspot/oops/ObjectHeap.java @ 3972:4f93f0d00802
7059019: G1: add G1 support to the SA
Summary: Extend the SA to recognize the G1CollectedHeap and implement any code that's needed by our serviceability tools (jmap, jinfo, jstack, etc.) that depend on the SA.
Reviewed-by: never, poonam, johnc
author | tonyp |
---|---|
date | Tue, 20 Sep 2011 09:59:59 -0400 |
parents | 63997f575155 |
children | da91efe96a93 |
line wrap: on
line diff
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/ObjectHeap.java Fri Sep 16 21:35:06 2011 -0700 +++ b/agent/src/share/classes/sun/jvm/hotspot/oops/ObjectHeap.java Tue Sep 20 09:59:59 2011 -0400 @@ -33,6 +33,7 @@ import sun.jvm.hotspot.debugger.*; import sun.jvm.hotspot.gc_interface.*; +import sun.jvm.hotspot.gc_implementation.g1.*; import sun.jvm.hotspot.gc_implementation.parallelScavenge.*; import sun.jvm.hotspot.memory.*; import sun.jvm.hotspot.runtime.*; @@ -514,9 +515,16 @@ private void addPermGenLiveRegions(List output, CollectedHeap heap) { LiveRegionsCollector lrc = new LiveRegionsCollector(output); - if (heap instanceof GenCollectedHeap) { - GenCollectedHeap genHeap = (GenCollectedHeap) heap; - Generation gen = genHeap.permGen(); + if (heap instanceof SharedHeap) { + if (Assert.ASSERTS_ENABLED) { + Assert.that(heap instanceof GenCollectedHeap || + heap instanceof G1CollectedHeap, + "Expecting GenCollectedHeap or G1CollectedHeap, " + + "but got " + heap.getClass().getName()); + } + // Handles both GenCollectedHeap and G1CollectedHeap + SharedHeap sharedHeap = (SharedHeap) heap; + Generation gen = sharedHeap.permGen(); gen.spaceIterate(lrc, true); } else if (heap instanceof ParallelScavengeHeap) { ParallelScavengeHeap psh = (ParallelScavengeHeap) heap; @@ -524,8 +532,9 @@ addLiveRegions(permGen.objectSpace().getLiveRegions(), output); } else { if (Assert.ASSERTS_ENABLED) { - Assert.that(false, "Expecting GenCollectedHeap or ParallelScavengeHeap, but got " + - heap.getClass().getName()); + Assert.that(false, + "Expecting SharedHeap or ParallelScavengeHeap, " + + "but got " + heap.getClass().getName()); } } } @@ -588,10 +597,14 @@ addLiveRegions(youngGen.fromSpace().getLiveRegions(), liveRegions); PSOldGen oldGen = psh.oldGen(); addLiveRegions(oldGen.objectSpace().getLiveRegions(), liveRegions); + } else if (heap instanceof G1CollectedHeap) { + G1CollectedHeap g1h = (G1CollectedHeap) heap; + g1h.heapRegionIterate(lrc); } else { if (Assert.ASSERTS_ENABLED) { - Assert.that(false, "Expecting GenCollectedHeap or ParallelScavengeHeap, but got " + - heap.getClass().getName()); + Assert.that(false, "Expecting GenCollectedHeap, G1CollectedHeap, " + + "or ParallelScavengeHeap, but got " + + heap.getClass().getName()); } }