8 * This code is distributed in the hope that it will be useful, but WITHOUT
9 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
11 * version 2 for more details (a copy is included in the LICENSE file that
12 * accompanied this code).
13 *
14 * You should have received a copy of the GNU General Public License version
15 * 2 along with this work; if not, write to the Free Software Foundation,
16 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
17 *
18 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
19 * or visit www.oracle.com if you need additional information or have any
20 * questions.
21 *
22 */
23
24 package sun.jvm.hotspot.gc.shenandoah;
25
26 import sun.jvm.hotspot.gc.shared.CollectedHeap;
27 import sun.jvm.hotspot.gc.shared.CollectedHeapName;
28 import sun.jvm.hotspot.debugger.Address;
29 import sun.jvm.hotspot.runtime.VM;
30 import sun.jvm.hotspot.types.Type;
31 import sun.jvm.hotspot.types.TypeDataBase;
32 import sun.jvm.hotspot.memory.MemRegion;
33 import sun.jvm.hotspot.types.CIntegerField;
34 import java.io.PrintStream;
35 import java.util.Observable;
36 import java.util.Observer;
37
38 public class ShenandoahHeap extends CollectedHeap {
39 static private CIntegerField numRegions;
40 static private CIntegerField used;
41 static private CIntegerField committed;
42 static {
43 VM.registerVMInitializedObserver(new Observer() {
44 public void update(Observable o, Object data) {
45 initialize(VM.getVM().getTypeDataBase());
46 }
47 });
58 public CollectedHeapName kind() {
59 return CollectedHeapName.SHENANDOAH;
60 }
61
62 public long numOfRegions() {
63 return numRegions.getValue(addr);
64 }
65
66 @Override
67 public long capacity() {
68 return numOfRegions() * ShenandoahHeapRegion.regionSizeBytes();
69 }
70
71 @Override
72 public long used() {
73 return used.getValue(addr);
74 }
75
76 public long committed() {
77 return committed.getValue(addr);
78 }
79
80 @Override
81 public void printOn(PrintStream tty) {
82 MemRegion mr = reservedRegion();
83 tty.print("Shenandoah heap");
84 tty.print(" [" + mr.start() + ", " + mr.end() + "]");
85 tty.println(" region size " + ShenandoahHeapRegion.regionSizeBytes() / 1024 + " K");
86 }
87
88 public ShenandoahHeap(Address addr) {
89 super(addr);
90 }
91 }
|
8 * This code is distributed in the hope that it will be useful, but WITHOUT
9 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
11 * version 2 for more details (a copy is included in the LICENSE file that
12 * accompanied this code).
13 *
14 * You should have received a copy of the GNU General Public License version
15 * 2 along with this work; if not, write to the Free Software Foundation,
16 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
17 *
18 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
19 * or visit www.oracle.com if you need additional information or have any
20 * questions.
21 *
22 */
23
24 package sun.jvm.hotspot.gc.shenandoah;
25
26 import sun.jvm.hotspot.gc.shared.CollectedHeap;
27 import sun.jvm.hotspot.gc.shared.CollectedHeapName;
28 import sun.jvm.hotspot.gc.shared.LiveRegionsClosure;
29 import sun.jvm.hotspot.debugger.Address;
30 import sun.jvm.hotspot.runtime.VM;
31 import sun.jvm.hotspot.types.Type;
32 import sun.jvm.hotspot.types.TypeDataBase;
33 import sun.jvm.hotspot.memory.MemRegion;
34 import sun.jvm.hotspot.types.CIntegerField;
35 import java.io.PrintStream;
36 import java.util.Observable;
37 import java.util.Observer;
38
39 public class ShenandoahHeap extends CollectedHeap {
40 static private CIntegerField numRegions;
41 static private CIntegerField used;
42 static private CIntegerField committed;
43 static {
44 VM.registerVMInitializedObserver(new Observer() {
45 public void update(Observable o, Object data) {
46 initialize(VM.getVM().getTypeDataBase());
47 }
48 });
59 public CollectedHeapName kind() {
60 return CollectedHeapName.SHENANDOAH;
61 }
62
63 public long numOfRegions() {
64 return numRegions.getValue(addr);
65 }
66
67 @Override
68 public long capacity() {
69 return numOfRegions() * ShenandoahHeapRegion.regionSizeBytes();
70 }
71
72 @Override
73 public long used() {
74 return used.getValue(addr);
75 }
76
77 public long committed() {
78 return committed.getValue(addr);
79 }
80
81 @Override
82 public void liveRegionsIterate(LiveRegionsClosure closure) {
83 // Operation (currently) not supported with Shenandoah GC.
84 System.err.println("Warning: Operation not supported with Shenandoah GC");
85 }
86
87 @Override
88 public void printOn(PrintStream tty) {
89 MemRegion mr = reservedRegion();
90 tty.print("Shenandoah heap");
91 tty.print(" [" + mr.start() + ", " + mr.end() + "]");
92 tty.println(" region size " + ShenandoahHeapRegion.regionSizeBytes() / 1024 + " K");
93 }
94
95 public ShenandoahHeap(Address addr) {
96 super(addr);
97 }
98 }
|