< 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 >