Mercurial > hg > graal-jvmci-8
comparison agent/src/share/classes/sun/jvm/hotspot/gc_implementation/g1/G1CollectedHeap.java @ 3984:81aa07130d30
7097048: G1: extend the G1 SA changes to print per-heap space information
Reviewed-by: brutisso, johnc
author | tonyp |
---|---|
date | Mon, 03 Oct 2011 19:04:14 -0400 |
parents | 4f93f0d00802 |
children | 0b3d1ec6eaee |
comparison
equal
deleted
inserted
replaced
3983:811ec3d0833b | 3984:81aa07130d30 |
---|---|
33 import sun.jvm.hotspot.memory.MemRegion; | 33 import sun.jvm.hotspot.memory.MemRegion; |
34 import sun.jvm.hotspot.memory.SharedHeap; | 34 import sun.jvm.hotspot.memory.SharedHeap; |
35 import sun.jvm.hotspot.memory.SpaceClosure; | 35 import sun.jvm.hotspot.memory.SpaceClosure; |
36 import sun.jvm.hotspot.runtime.VM; | 36 import sun.jvm.hotspot.runtime.VM; |
37 import sun.jvm.hotspot.runtime.VMObjectFactory; | 37 import sun.jvm.hotspot.runtime.VMObjectFactory; |
38 import sun.jvm.hotspot.types.AddressField; | |
38 import sun.jvm.hotspot.types.CIntegerField; | 39 import sun.jvm.hotspot.types.CIntegerField; |
39 import sun.jvm.hotspot.types.Type; | 40 import sun.jvm.hotspot.types.Type; |
40 import sun.jvm.hotspot.types.TypeDataBase; | 41 import sun.jvm.hotspot.types.TypeDataBase; |
41 | 42 |
42 // Mirror class for G1CollectedHeap. | 43 // Mirror class for G1CollectedHeap. |
46 static private long hrsFieldOffset; | 47 static private long hrsFieldOffset; |
47 // MemRegion _g1_committed; | 48 // MemRegion _g1_committed; |
48 static private long g1CommittedFieldOffset; | 49 static private long g1CommittedFieldOffset; |
49 // size_t _summary_bytes_used; | 50 // size_t _summary_bytes_used; |
50 static private CIntegerField summaryBytesUsedField; | 51 static private CIntegerField summaryBytesUsedField; |
52 // G1MonitoringSupport* _g1mm | |
53 static private AddressField g1mmField; | |
51 | 54 |
52 static { | 55 static { |
53 VM.registerVMInitializedObserver(new Observer() { | 56 VM.registerVMInitializedObserver(new Observer() { |
54 public void update(Observable o, Object data) { | 57 public void update(Observable o, Object data) { |
55 initialize(VM.getVM().getTypeDataBase()); | 58 initialize(VM.getVM().getTypeDataBase()); |
61 Type type = db.lookupType("G1CollectedHeap"); | 64 Type type = db.lookupType("G1CollectedHeap"); |
62 | 65 |
63 hrsFieldOffset = type.getField("_hrs").getOffset(); | 66 hrsFieldOffset = type.getField("_hrs").getOffset(); |
64 g1CommittedFieldOffset = type.getField("_g1_committed").getOffset(); | 67 g1CommittedFieldOffset = type.getField("_g1_committed").getOffset(); |
65 summaryBytesUsedField = type.getCIntegerField("_summary_bytes_used"); | 68 summaryBytesUsedField = type.getCIntegerField("_summary_bytes_used"); |
69 g1mmField = type.getAddressField("_g1mm"); | |
66 } | 70 } |
67 | 71 |
68 public long capacity() { | 72 public long capacity() { |
69 Address g1CommittedAddr = addr.addOffsetTo(g1CommittedFieldOffset); | 73 Address g1CommittedAddr = addr.addOffsetTo(g1CommittedFieldOffset); |
70 MemRegion g1_committed = new MemRegion(g1CommittedAddr); | 74 MemRegion g1_committed = new MemRegion(g1CommittedAddr); |
83 Address hrsAddr = addr.addOffsetTo(hrsFieldOffset); | 87 Address hrsAddr = addr.addOffsetTo(hrsFieldOffset); |
84 return (HeapRegionSeq) VMObjectFactory.newObject(HeapRegionSeq.class, | 88 return (HeapRegionSeq) VMObjectFactory.newObject(HeapRegionSeq.class, |
85 hrsAddr); | 89 hrsAddr); |
86 } | 90 } |
87 | 91 |
92 public G1MonitoringSupport g1mm() { | |
93 Address g1mmAddr = g1mmField.getValue(addr); | |
94 return (G1MonitoringSupport) VMObjectFactory.newObject(G1MonitoringSupport.class, g1mmAddr); | |
95 } | |
96 | |
88 private Iterator<HeapRegion> heapRegionIterator() { | 97 private Iterator<HeapRegion> heapRegionIterator() { |
89 return hrs().heapRegionIterator(); | 98 return hrs().heapRegionIterator(); |
90 } | 99 } |
91 | 100 |
92 public void heapRegionIterate(SpaceClosure scl) { | 101 public void heapRegionIterate(SpaceClosure scl) { |