< prev index next >

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

Print this page
*** 53,11 ***
    public InstanceMirrorKlass(Address addr) {
      super(addr);
    }
  
    public long getObjectSize(Oop o) {
!     return java_lang_Class.getOopSize(o) * VM.getVM().getAddressSize();
    }
  
    public void iterateNonStaticFields(OopVisitor visitor, Oop obj) {
      super.iterateNonStaticFields(visitor, obj);
      // Fetch the real klass from the mirror object
--- 53,19 ---
    public InstanceMirrorKlass(Address addr) {
      super(addr);
    }
  
    public long getObjectSize(Oop o) {
!     long s = java_lang_Class.getOopSize(o) * VM.getVM().getAddressSize();
+     if (VM.getVM().isCompactObjectHeadersEnabled()) {
+       Mark mark = o.getMark();
+       if (mark.isExpanded()) {
+         // Needs extra 4 bytes for identity hash-code (and align-up to whole word).
+         s += VM.getVM().getAddressSize();
+       }
+     }
+     return s;
    }
  
    public void iterateNonStaticFields(OopVisitor visitor, Oop obj) {
      super.iterateNonStaticFields(visitor, obj);
      // Fetch the real klass from the mirror object
< prev index next >