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.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);
58 }
59
60 @Override
61 public CollectedHeapName kind() {
62 return CollectedHeapName.Z;
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 }
|
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.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.gc.shared.LiveRegionsClosure;
34 import sun.jvm.hotspot.runtime.VM;
35 import sun.jvm.hotspot.runtime.VMObjectFactory;
36 import sun.jvm.hotspot.types.Type;
37 import sun.jvm.hotspot.types.TypeDataBase;
38 import sun.jvm.hotspot.utilities.BitMapInterface;
39
40 // Mirror class for ZCollectedHeap.
41
42 public class ZCollectedHeap extends CollectedHeap {
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);
58 }
59
60 @Override
61 public CollectedHeapName kind() {
62 return CollectedHeapName.Z;
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 void liveRegionsIterate(LiveRegionsClosure closure) {
124 // Operation (currently) not supported with ZGC. Print
125 // a warning and leave the list of live regions empty.
126 System.err.println("Warning: Operation not supported with ZGC");
127 }
128
129 @Override
130 public BitMapInterface createBitMap(long size) {
131 // Ignores the size
132 return new ZExternalBitMap(this);
133 }
134 }
|