< prev index next >

src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZOop.java

Print this page
rev 48259 : SA for GC - patch 2

*** 23,48 **** */ package sun.jvm.hotspot.gc.z; import sun.jvm.hotspot.debugger.Address; - import sun.jvm.hotspot.debugger.OopHandle; import sun.jvm.hotspot.runtime.VM; class ZOop { ! private static final long MSB = ~0L ^ (~0L >>> 1); ! private static Address msbAddress() { ! return VM.getVM().getUniverse().heap().start().orWithMask(MSB).andWithMask(MSB); ! } ! ! static Address to_address(long value) { // If the value of an Address becomes 0, null is returned instead of an Address. // Start with a one-bit address and as a last step, remove that bit. ! Address oneAddress = msbAddress(); ! return oneAddress.orWithMask(value).xorWithMask(ZAddress.as_long(oneAddress)); } - - static Address to_address(OopHandle oop) { - return to_address(ZAddress.as_long(oop)); } } --- 23,42 ---- */ package sun.jvm.hotspot.gc.z; import sun.jvm.hotspot.debugger.Address; import sun.jvm.hotspot.runtime.VM; class ZOop { ! private static final long REMOVE_MSB_MASK = Long.MAX_VALUE; ! static Address to_address(Address oop) { // If the value of an Address becomes 0, null is returned instead of an Address. // Start with a one-bit address and as a last step, remove that bit. ! if ((oop == null) || (oop.asLongValue() == 0L)) { ! return null; ! } else { ! return oop.andWithMask(REMOVE_MSB_MASK); } } }
< prev index next >