< prev index next > src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/InstanceKlass.java
Print this page
staticOopFieldCount = new CIntField(type.getCIntegerField("_static_oop_field_count"), 0);
nonstaticOopMapSize = new CIntField(type.getCIntegerField("_nonstatic_oop_map_size"), 0);
initState = new CIntField(type.getCIntegerField("_init_state"), 0);
itableLen = new CIntField(type.getCIntegerField("_itable_len"), 0);
nestHostIndex = new CIntField(type.getCIntegerField("_nest_host_index"), 0);
+ hashOffset = new CIntField(type.getCIntegerField("_hash_offset"), 0);
if (VM.getVM().isJvmtiSupported()) {
breakpoints = type.getAddressField("_breakpoints");
}
headerSize = type.getSize();
private static CIntField staticOopFieldCount;
private static CIntField nonstaticOopMapSize;
private static CIntField initState;
private static CIntField itableLen;
private static CIntField nestHostIndex;
+ private static CIntField hashOffset;
private static AddressField breakpoints;
// type safe enum for ClassState from instanceKlass.hpp
public static class ClassState {
public static final ClassState ALLOCATED = new ClassState("allocated");
// Byteside of the header
private static long headerSize;
public long getObjectSize(Oop object) {
- return getSizeHelper() * VM.getVM().getAddressSize();
+ long baseSize = getSizeHelper() * VM.getVM().getAddressSize();
+ if (VM.getVM().isCompactObjectHeadersEnabled()) {
+ Mark mark = object.getMark();
+ if (mark.isExpanded() && (getHashOffset() + 4 /* size of hash field */) > baseSize) {
+ // Needs extra word for identity hash-code.
+ return baseSize + VM.getVM().getBytesPerWord();
+ }
+ }
+ return baseSize;
}
public long getSize() { // in number of bytes
long wordLength = VM.getVM().getBytesPerWord();
long size = getHeaderSize() +
public long getNonstaticFieldSize() { return nonstaticFieldSize.getValue(this); }
public long getStaticOopFieldCount() { return staticOopFieldCount.getValue(this); }
public long getNonstaticOopMapSize() { return nonstaticOopMapSize.getValue(this); }
public long getItableLen() { return itableLen.getValue(this); }
public short getNestHostIndex() { return (short) nestHostIndex.getValue(this); }
+ public long getHashOffset() { return hashOffset.getValue(this); }
public long majorVersion() { return getConstants().majorVersion(); }
public long minorVersion() { return getConstants().minorVersion(); }
public Symbol getGenericSignature() { return getConstants().getGenericSignature(); }
// "size helper" == instance size in words
public long getSizeHelper() {
< prev index next >