diff a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/Mark.java b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/Mark.java
--- a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/Mark.java
+++ b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/Mark.java
@@ -49,22 +49,28 @@
 
     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();
@@ -79,22 +85,28 @@
   // 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;
@@ -190,17 +202,27 @@
   }
   public int age() { return (int) Bits.maskBitsLong(value() >> ageShift, ageMask); }
 
   // hash operations
   public long hash() {
-    return Bits.maskBitsLong(value() >> hashShift, hashMask);
+    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));
   }
 
