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.z;
26
27 import java.io.PrintStream;
28
29 import sun.jvm.hotspot.debugger.Address;
30 import sun.jvm.hotspot.debugger.OopHandle;
31 import sun.jvm.hotspot.gc.shared.CollectedHeap;
32 import sun.jvm.hotspot.gc.shared.CollectedHeapName;
33 import sun.jvm.hotspot.runtime.VM;
34 import sun.jvm.hotspot.runtime.VMObjectFactory;
35 import sun.jvm.hotspot.types.Type;
36 import sun.jvm.hotspot.types.TypeDataBase;
37
38 // Mirror class for ZCollectedHeap.
39
40 public class ZCollectedHeap extends CollectedHeap {
41
42 private static long zHeapFieldOffset;
43
44 static {
45 VM.registerVMInitializedObserver((o, d) -> initialize(VM.getVM().getTypeDataBase()));
46 }
47
48 private static synchronized void initialize(TypeDataBase db) {
49 Type type = db.lookupType("ZCollectedHeap");
50
51 zHeapFieldOffset = type.getAddressField("_heap").getOffset();
52 }
53
54 public ZHeap heap() {
55 Address heapAddr = addr.addOffsetTo(zHeapFieldOffset);
56 return (ZHeap)VMObjectFactory.newObject(ZHeap.class, heapAddr);
99
100 return oop_load_barrier(oopAddress);
101 }
102
103 // addr can be either in heap or in native
104 @Override
105 public OopHandle oop_load_in_native(Address addr) {
106 Address oopAddress = addr.getAddressAt(0);
107
108 return oop_load_barrier(oopAddress);
109 }
110
111 public String oopAddressDescription(OopHandle handle) {
112 Address origOop = ZOop.to_address(handle);
113 Address loadBarrieredOop = ZBarrier.weak_barrier(origOop);
114 if (!origOop.equals(loadBarrieredOop)) {
115 return origOop + " (" + loadBarrieredOop.toString() + ")";
116 } else {
117 return handle.toString();
118 }
119 }
120 }
|
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.z;
26
27 import java.io.PrintStream;
28
29 import sun.jvm.hotspot.debugger.Address;
30 import sun.jvm.hotspot.debugger.OopHandle;
31 import sun.jvm.hotspot.gc.shared.CollectedHeap;
32 import sun.jvm.hotspot.gc.shared.CollectedHeapName;
33 import sun.jvm.hotspot.runtime.VM;
34 import sun.jvm.hotspot.runtime.VMObjectFactory;
35 import sun.jvm.hotspot.types.Type;
36 import sun.jvm.hotspot.types.TypeDataBase;
37 import sun.jvm.hotspot.utilities.BitMapInterface;
38
39 // Mirror class for ZCollectedHeap.
40
41 public class ZCollectedHeap extends CollectedHeap {
42
43 private static long zHeapFieldOffset;
44
45 static {
46 VM.registerVMInitializedObserver((o, d) -> initialize(VM.getVM().getTypeDataBase()));
47 }
48
49 private static synchronized void initialize(TypeDataBase db) {
50 Type type = db.lookupType("ZCollectedHeap");
51
52 zHeapFieldOffset = type.getAddressField("_heap").getOffset();
53 }
54
55 public ZHeap heap() {
56 Address heapAddr = addr.addOffsetTo(zHeapFieldOffset);
57 return (ZHeap)VMObjectFactory.newObject(ZHeap.class, heapAddr);
100
101 return oop_load_barrier(oopAddress);
102 }
103
104 // addr can be either in heap or in native
105 @Override
106 public OopHandle oop_load_in_native(Address addr) {
107 Address oopAddress = addr.getAddressAt(0);
108
109 return oop_load_barrier(oopAddress);
110 }
111
112 public String oopAddressDescription(OopHandle handle) {
113 Address origOop = ZOop.to_address(handle);
114 Address loadBarrieredOop = ZBarrier.weak_barrier(origOop);
115 if (!origOop.equals(loadBarrieredOop)) {
116 return origOop + " (" + loadBarrieredOop.toString() + ")";
117 } else {
118 return handle.toString();
119 }
120 }
121
122 @Override
123 public BitMapInterface createBitMap(long size) {
124 // Ignores the size
125 return new ZExternalBitMap(this);
126 }
127 }
|