< prev index next > src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/Mark.java
Print this page
ageBits = db.lookupLongConstant("markWord::age_bits").longValue();
lockBits = db.lookupLongConstant("markWord::lock_bits").longValue();
maxHashBits = db.lookupLongConstant("markWord::max_hash_bits").longValue();
hashBits = db.lookupLongConstant("markWord::hash_bits").longValue();
+ hashCtrlBits = db.lookupLongConstant("markWord::hashctrl_bits").longValue();
lockShift = db.lookupLongConstant("markWord::lock_shift").longValue();
ageShift = db.lookupLongConstant("markWord::age_shift").longValue();
hashShift = db.lookupLongConstant("markWord::hash_shift").longValue();
+ hashCtrlShift = db.lookupLongConstant("markWord::hashctrl_shift").longValue();
if (VM.getVM().isLP64()) {
klassShift = db.lookupLongConstant("markWord::klass_shift").longValue();
}
lockMask = db.lookupLongConstant("markWord::lock_mask").longValue();
lockMaskInPlace = db.lookupLongConstant("markWord::lock_mask_in_place").longValue();
ageMask = db.lookupLongConstant("markWord::age_mask").longValue();
ageMaskInPlace = db.lookupLongConstant("markWord::age_mask_in_place").longValue();
hashMask = db.lookupLongConstant("markWord::hash_mask").longValue();
hashMaskInPlace = db.lookupLongConstant("markWord::hash_mask_in_place").longValue();
+ hashCtrlMask = db.lookupLongConstant("markWord::hashctrl_mask").longValue();
+ hashCtrlMaskInPlace = db.lookupLongConstant("markWord::hashctrl_mask_in_place").longValue();
+ hashCtrlHashedMaskInPlace = db.lookupLongConstant("markWord::hashctrl_hashed_mask_in_place").longValue();
+ hashCtrlExpandedMaskInPlace = db.lookupLongConstant("markWord::hashctrl_expanded_mask_in_place").longValue();
lockedValue = db.lookupLongConstant("markWord::locked_value").longValue();
unlockedValue = db.lookupLongConstant("markWord::unlocked_value").longValue();
monitorValue = db.lookupLongConstant("markWord::monitor_value").longValue();
markedValue = db.lookupLongConstant("markWord::marked_value").longValue();
noHash = db.lookupLongConstant("markWord::no_hash").longValue();
// Constants -- read from VM
private static long ageBits;
private static long lockBits;
private static long maxHashBits;
private static long hashBits;
+ private static long hashCtrlBits;
private static long lockShift;
private static long ageShift;
private static long hashShift;
+ private static long hashCtrlShift;
private static long klassShift;
private static long lockMask;
private static long lockMaskInPlace;
private static long ageMask;
private static long ageMaskInPlace;
private static long hashMask;
private static long hashMaskInPlace;
+ private static long hashCtrlMask;
+ private static long hashCtrlMaskInPlace;
+ private static long hashCtrlHashedMaskInPlace;
+ private static long hashCtrlExpandedMaskInPlace;
private static long lockedValue;
private static long unlockedValue;
private static long monitorValue;
private static long markedValue;
}
public int age() { return (int) Bits.maskBitsLong(value() >> ageShift, ageMask); }
// hash operations
public long hash() {
! return Bits.maskBitsLong(value() >> hashShift, hashMask);
}
public boolean hasNoHash() {
return hash() == noHash;
}
public Klass getKlass() {
assert(VM.getVM().isCompactObjectHeadersEnabled());
return (Klass)Metadata.instantiateWrapperFor(addr.getCompKlassAddressAt(0));
}
}
public int age() { return (int) Bits.maskBitsLong(value() >> ageShift, ageMask); }
// hash operations
public long hash() {
! if (VM.getVM().isCompactObjectHeadersEnabled()) {
+ System.exit(-23);
+ throw new RuntimeException("Compact I-Hash not yet implemented");
+ } else {
+ return Bits.maskBitsLong(value() >> hashShift, hashMask);
+ }
}
public boolean hasNoHash() {
return hash() == noHash;
}
+ public boolean isExpanded() {
+ assert(VM.getVM().isCompactObjectHeadersEnabled());
+ return Bits.maskBitsLong(value(), hashCtrlExpandedMaskInPlace) != 0;
+ }
+
public Klass getKlass() {
assert(VM.getVM().isCompactObjectHeadersEnabled());
return (Klass)Metadata.instantiateWrapperFor(addr.getCompKlassAddressAt(0));
}
< prev index next >