13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 package sun.jvm.hotspot.gc.g1;
26
27 import java.io.PrintStream;
28 import java.util.Iterator;
29 import java.util.Observable;
30 import java.util.Observer;
31
32 import sun.jvm.hotspot.debugger.Address;
33 import sun.jvm.hotspot.gc.shared.CollectedHeap;
34 import sun.jvm.hotspot.gc.shared.CollectedHeapName;
35 import sun.jvm.hotspot.gc.shared.LiveRegionsClosure;
36 import sun.jvm.hotspot.gc.shared.PrintRegionClosure;
37 import sun.jvm.hotspot.gc.shared.SpaceClosure;
38 import sun.jvm.hotspot.memory.MemRegion;
39 import sun.jvm.hotspot.runtime.VM;
40 import sun.jvm.hotspot.runtime.VMObjectFactory;
41 import sun.jvm.hotspot.types.AddressField;
42 import sun.jvm.hotspot.types.CIntegerField;
43 import sun.jvm.hotspot.types.Type;
44 import sun.jvm.hotspot.types.TypeDataBase;
45 import sun.jvm.hotspot.tools.HeapSummary;
46
47 // Mirror class for G1CollectedHeap.
48
49 public class G1CollectedHeap extends CollectedHeap {
50 // HeapRegionManager _hrm;
51 static private AddressField hrmField;
52 // MemRegion _g1_reserved;
53 static private long g1ReservedFieldOffset;
54 // size_t _summary_bytes_used;
55 static private CIntegerField summaryBytesUsedField;
56 // G1MonitoringSupport* _g1mm;
57 static private AddressField g1mmField;
109 return (HeapRegionSetBase) VMObjectFactory.newObject(HeapRegionSetBase.class,
110 oldSetAddr);
111 }
112
113 public HeapRegionSetBase archiveSet() {
114 Address archiveSetAddr = addr.addOffsetTo(archiveSetFieldOffset);
115 return (HeapRegionSetBase) VMObjectFactory.newObject(HeapRegionSetBase.class,
116 archiveSetAddr);
117 }
118
119 public HeapRegionSetBase humongousSet() {
120 Address humongousSetAddr = addr.addOffsetTo(humongousSetFieldOffset);
121 return (HeapRegionSetBase) VMObjectFactory.newObject(HeapRegionSetBase.class,
122 humongousSetAddr);
123 }
124
125 private Iterator<HeapRegion> heapRegionIterator() {
126 return hrm().heapRegionIterator();
127 }
128
129 public void heapRegionIterate(SpaceClosure scl) {
130 Iterator<HeapRegion> iter = heapRegionIterator();
131 while (iter.hasNext()) {
132 HeapRegion hr = iter.next();
133 scl.doSpace(hr);
134 }
135 }
136
137 public CollectedHeapName kind() {
138 return CollectedHeapName.G1;
139 }
140
141 @Override
142 public void liveRegionsIterate(LiveRegionsClosure closure) {
143 Iterator<HeapRegion> iter = heapRegionIterator();
144 while (iter.hasNext()) {
145 HeapRegion hr = iter.next();
146 closure.doLiveRegions(hr);
147 }
148 }
149
150 @Override
151 public void printOn(PrintStream tty) {
152 MemRegion mr = reservedRegion();
153
|
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 package sun.jvm.hotspot.gc.g1;
26
27 import java.io.PrintStream;
28 import java.util.Iterator;
29 import java.util.Observable;
30 import java.util.Observer;
31
32 import sun.jvm.hotspot.debugger.Address;
33 import sun.jvm.hotspot.gc.g1.HeapRegionClosure;
34 import sun.jvm.hotspot.gc.g1.PrintRegionClosure;
35 import sun.jvm.hotspot.gc.shared.CollectedHeap;
36 import sun.jvm.hotspot.gc.shared.CollectedHeapName;
37 import sun.jvm.hotspot.gc.shared.LiveRegionsClosure;
38 import sun.jvm.hotspot.memory.MemRegion;
39 import sun.jvm.hotspot.runtime.VM;
40 import sun.jvm.hotspot.runtime.VMObjectFactory;
41 import sun.jvm.hotspot.types.AddressField;
42 import sun.jvm.hotspot.types.CIntegerField;
43 import sun.jvm.hotspot.types.Type;
44 import sun.jvm.hotspot.types.TypeDataBase;
45 import sun.jvm.hotspot.tools.HeapSummary;
46
47 // Mirror class for G1CollectedHeap.
48
49 public class G1CollectedHeap extends CollectedHeap {
50 // HeapRegionManager _hrm;
51 static private AddressField hrmField;
52 // MemRegion _g1_reserved;
53 static private long g1ReservedFieldOffset;
54 // size_t _summary_bytes_used;
55 static private CIntegerField summaryBytesUsedField;
56 // G1MonitoringSupport* _g1mm;
57 static private AddressField g1mmField;
109 return (HeapRegionSetBase) VMObjectFactory.newObject(HeapRegionSetBase.class,
110 oldSetAddr);
111 }
112
113 public HeapRegionSetBase archiveSet() {
114 Address archiveSetAddr = addr.addOffsetTo(archiveSetFieldOffset);
115 return (HeapRegionSetBase) VMObjectFactory.newObject(HeapRegionSetBase.class,
116 archiveSetAddr);
117 }
118
119 public HeapRegionSetBase humongousSet() {
120 Address humongousSetAddr = addr.addOffsetTo(humongousSetFieldOffset);
121 return (HeapRegionSetBase) VMObjectFactory.newObject(HeapRegionSetBase.class,
122 humongousSetAddr);
123 }
124
125 private Iterator<HeapRegion> heapRegionIterator() {
126 return hrm().heapRegionIterator();
127 }
128
129 public void heapRegionIterate(HeapRegionClosure hrcl) {
130 Iterator<HeapRegion> iter = heapRegionIterator();
131 while (iter.hasNext()) {
132 HeapRegion hr = iter.next();
133 hrcl.doHeapRegion(hr);
134 }
135 }
136
137 public CollectedHeapName kind() {
138 return CollectedHeapName.G1;
139 }
140
141 @Override
142 public void liveRegionsIterate(LiveRegionsClosure closure) {
143 Iterator<HeapRegion> iter = heapRegionIterator();
144 while (iter.hasNext()) {
145 HeapRegion hr = iter.next();
146 closure.doLiveRegions(hr);
147 }
148 }
149
150 @Override
151 public void printOn(PrintStream tty) {
152 MemRegion mr = reservedRegion();
153
|