< prev index next >

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

Print this page
@@ -54,10 +54,13 @@
      hashBits            = db.lookupLongConstant("markWord::hash_bits").longValue();
      lockShift           = db.lookupLongConstant("markWord::lock_shift").longValue();
      biasedLockShift     = db.lookupLongConstant("markWord::biased_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();
      biasedLockMask      = db.lookupLongConstant("markWord::biased_lock_mask").longValue();
      biasedLockMaskInPlace  = db.lookupLongConstant("markWord::biased_lock_mask_in_place").longValue();
      biasedLockBitInPlace  = db.lookupLongConstant("markWord::biased_lock_bit_in_place").longValue();

@@ -89,10 +92,11 @@
  
    private static long lockShift;
    private static long biasedLockShift;
    private static long ageShift;
    private static long hashShift;
+   private static long klassShift;
  
    private static long lockMask;
    private static long lockMaskInPlace;
    private static long biasedLockMask;
    private static long biasedLockMaskInPlace;

@@ -119,10 +123,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() {

@@ -220,10 +228,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 >