< prev index next >

src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/Mark.java

Print this page
*** 52,10 ***
--- 52,13 ---
      maxHashBits         = db.lookupLongConstant("markWord::max_hash_bits").longValue();
      hashBits            = db.lookupLongConstant("markWord::hash_bits").longValue();
      lockShift           = db.lookupLongConstant("markWord::lock_shift").longValue();
      ageShift            = db.lookupLongConstant("markWord::age_shift").longValue();
      hashShift           = db.lookupLongConstant("markWord::hash_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();

*** 80,10 ***
--- 83,11 ---
    private static long hashBits;
  
    private static long lockShift;
    private static long ageShift;
    private static long hashShift;
+   private static long klassShift;
  
    private static long lockMask;
    private static long lockMaskInPlace;
    private static long ageMask;
    private static long ageMaskInPlace;

*** 105,10 ***
--- 109,14 ---
    /* Constants in markWord used by CMS. */
    private static long cmsShift;
    private static long cmsMask;
    private static long sizeShift;
  
+   public static long getKlassShift() {
+     return klassShift;
+   }
+ 
    public Mark(Address addr) {
      super(addr);
    }
  
    public long value() {

*** 184,10 ***
--- 192,16 ---
  
    public boolean hasNoHash() {
      return hash() == noHash;
    }
  
+   public Klass getKlass() {
+     assert(VM.getVM().isCompactObjectHeadersEnabled());
+     assert(!hasMonitor());
+     return (Klass)Metadata.instantiateWrapperFor(addr.getCompKlassAddressAt(0));
+   }
+ 
    // Debugging
    public void printOn(PrintStream tty) {
      if (isLocked()) {
        tty.print("locked(0x" +
                  Long.toHexString(value()) + ")->");
< prev index next >