- java.lang.Object
-
- com.ibm.j9ddr.vm29.j9.ObjectModel
-
public final class ObjectModel extends Object
-
-
Field Summary
Fields Modifier and Type Field Description protected static GCObjectModel
gcObjectModel
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static UDATA
adjustSizeInBytes(UDATA sizeInBytes)
Object size should be at least minimumConsumedSize and 8 byte aligned.static GCHeapRegionDescriptor
findRegionForPointer(com.ibm.j9ddr.vm29.pointer.generated.J9JavaVMPointer javaVM, GCHeapRegionManager hrm, AbstractPointer pointer, GCHeapRegionDescriptor region)
Returns the heap region of a pointer.static U32
getAge(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object)
Returns the age of an object.static UDATA
getClassShape(com.ibm.j9ddr.vm29.pointer.generated.J9ClassPointer clazz)
Returns the shape of an object.static UDATA
getClassShape(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object)
Returns the shape of an object.static UDATA
getConsumedSizeInBytesWithHeader(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object)
Same as getSizeInBytesWithHeader, except it takes into account object alignment and minimum object sizeUDATA
getConsumedSizeInSlotsWithHeader(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object)
Same as getSizeInSlotsWithHeader, except it takes into account object alignment and minimum object sizestatic UDATA
getDataSizeInBytes(com.ibm.j9ddr.vm29.pointer.generated.J9IndexableObjectPointer array)
Returns the size of data in an indexable object, in bytes, including leaves, excluding the header.static VoidPointer
getElementAddress(com.ibm.j9ddr.vm29.pointer.generated.J9IndexableObjectPointer indexableObjectPointer, int elementIndex, int elementSize)
Returns the address of an element.static UDATA
getHashcodeOffset(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object)
static UDATA
getHeaderSize(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object)
Returns the size of an object header, in bytes.static long
getObjectAlignmentInBytes()
Object size should be at least minimumConsumedSize and 8 byte aligned.static I32
getObjectHashCode(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object)
Determine the basic hash code for the specified object.static UDATA
getRememberedBits(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object)
Returns the collector bits from object's header.static long
getScanType(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object)
static UDATA
getSizeInBytesHoleObject(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object)
Returns the size in bytes of a hole object.static UDATA
getSizeInBytesMultiSlotHoleObject(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object)
Returns the size, in bytes, of a multi-slot hole object.static UDATA
getSizeInBytesSingleSlotHoleObject(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object)
Returns the size, in bytes, of a single slot hole object.static UDATA
getSizeInBytesWithHeader(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object)
Returns the size of an object, in bytes, including the header.static UDATA
getSizeInElements(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object)
Returns the size of an indexable object in elements.UDATA
getSizeInSlotsWithHeader(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object)
Returns the size of an object, in slots, including the header.static UDATA
getTotalFootprintInBytesWithHeader(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object)
Get the total footprint of an object, in bytes, including the object header and all data.static boolean
hasBeenHashed(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object)
Returns TRUE if an object has been hashed, FALSE otherwise.static boolean
hasBeenMoved(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object)
Returns TRUE if an object has been moved after being hashed, FALSE otherwise.static boolean
hasCorrectDataAddrPointer(com.ibm.j9ddr.vm29.pointer.generated.J9IndexableObjectPointer arrayPtr)
Determine the validity of the data address belonging to arrayPtr.static boolean
isDarkMatterObject(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object)
Returns TRUE if an object is dark matter, FALSE otherwise.static boolean
isHoleObject(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object)
Returns TRUE if an object is a hole, FALSE otherwise.static boolean
isIndexable(com.ibm.j9ddr.vm29.pointer.generated.J9ClassPointer clazz)
Returns TRUE if an class is indexable, FALSE otherwise.static boolean
isIndexable(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object)
Returns TRUE if an object is indexable, FALSE otherwise.static boolean
isInlineContiguousArraylet(com.ibm.j9ddr.vm29.pointer.generated.J9IndexableObjectPointer arrayPtr)
static boolean
isOld(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object)
Returns TRUE if an object is old, FALSE otherwise.static boolean
isPointerInHeap(com.ibm.j9ddr.vm29.pointer.generated.J9JavaVMPointer javaVM, AbstractPointer pointer)
Returns true if a pointer is in stored in heap.static boolean
isPointerInRegion(AbstractPointer pointer, GCHeapRegionDescriptor region)
Returns true if a pointer is in stored in specified region.static boolean
isRemembered(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object)
Returns TRUE if an object is remembered, FALSE otherwise.static boolean
isSingleSlotHoleObject(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object)
Returns TRUE if an object is a single slot hole object, FALSE otherwise.static GCHeapRegionDescriptor
regionForAddress(com.ibm.j9ddr.vm29.pointer.generated.J9JavaVMPointer javaVM, GCHeapRegionManager hrm, AbstractPointer pointer)
Returns the heap region for address of a pointer.
-
-
-
Field Detail
-
gcObjectModel
protected static final GCObjectModel gcObjectModel
-
-
Method Detail
-
adjustSizeInBytes
public static UDATA adjustSizeInBytes(UDATA sizeInBytes)
Object size should be at least minimumConsumedSize and 8 byte aligned.- Parameters:
sizeInBytes
- Real size of an object- Returns:
- Adjusted size
-
getObjectAlignmentInBytes
public static long getObjectAlignmentInBytes()
Object size should be at least minimumConsumedSize and 8 byte aligned.- Parameters:
sizeInBytes
- Real size of an object- Returns:
- Adjusted size
-
getClassShape
public static UDATA getClassShape(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object) throws CorruptDataException
Returns the shape of an object.- Parameters:
object
- Pointer to object whose shape is required.- Returns:
- The shape of the object
- Throws:
CorruptDataException
-
getClassShape
public static UDATA getClassShape(com.ibm.j9ddr.vm29.pointer.generated.J9ClassPointer clazz) throws CorruptDataException
Returns the shape of an object.- Parameters:
clazz
- Pointer to J9Class whose shape is required.- Returns:
- The shape of the object
- Throws:
CorruptDataException
-
isIndexable
public static boolean isIndexable(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object) throws CorruptDataException
Returns TRUE if an object is indexable, FALSE otherwise.- Parameters:
object
- Pointer to an object- Returns:
- TRUE if an object is indexable, FALSE otherwise
- Throws:
CorruptDataException
-
isIndexable
public static boolean isIndexable(com.ibm.j9ddr.vm29.pointer.generated.J9ClassPointer clazz) throws CorruptDataException
Returns TRUE if an class is indexable, FALSE otherwise.- Parameters:
clazz
- Pointer to an J9Class- Returns:
- TRUE if an class is indexable, FALSE otherwise
- Throws:
CorruptDataException
-
isHoleObject
public static boolean isHoleObject(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object) throws CorruptDataException
Returns TRUE if an object is a hole, FALSE otherwise.- Parameters:
object
- Pointer to an object- Returns:
- TRUE if an object is a hole, FALSE otherwise
- Throws:
CorruptDataException
-
isSingleSlotHoleObject
public static boolean isSingleSlotHoleObject(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object) throws CorruptDataException
Returns TRUE if an object is a single slot hole object, FALSE otherwise.- Parameters:
object
- Pointer to an object- Returns:
- TRUE if an object is a single slot hole object, FALSE otherwise
- Throws:
CorruptDataException
-
getSizeInBytesMultiSlotHoleObject
public static UDATA getSizeInBytesMultiSlotHoleObject(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object) throws CorruptDataException
Returns the size, in bytes, of a multi-slot hole object.- Parameters:
object
- Pointer to an object- Returns:
- The size, in bytes, of a multi-slot hole object
- Throws:
CorruptDataException
-
getSizeInBytesSingleSlotHoleObject
public static UDATA getSizeInBytesSingleSlotHoleObject(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object)
Returns the size, in bytes, of a single slot hole object.- Parameters:
object
- Pointer to an object- Returns:
- The size, in bytes, of a single slot hole object
-
getSizeInBytesHoleObject
public static UDATA getSizeInBytesHoleObject(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object) throws CorruptDataException
Returns the size in bytes of a hole object.- Parameters:
object
- Pointer to an object- Returns:
- The size in bytes of a hole object
- Throws:
CorruptDataException
-
isDarkMatterObject
public static boolean isDarkMatterObject(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object) throws CorruptDataException
Returns TRUE if an object is dark matter, FALSE otherwise.- Parameters:
object
- Pointer to an object- Returns:
- TRUE if an object is dark matter, FALSE otherwise
- Throws:
CorruptDataException
-
getSizeInBytesWithHeader
public static UDATA getSizeInBytesWithHeader(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object) throws CorruptDataException
Returns the size of an object, in bytes, including the header.- Parameters:
object
- Pointer to an object- Returns:
- The size of an object, in bytes, including the header
- Throws:
CorruptDataException
-
getTotalFootprintInBytesWithHeader
public static UDATA getTotalFootprintInBytesWithHeader(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object) throws CorruptDataException
Get the total footprint of an object, in bytes, including the object header and all data. If the object has a discontiguous representation, this method should return the size of the root object plus the total of all the discontiguous parts of the object.- Parameters:
object
- Pointer to an object- Returns:
- the total size of an object, in bytes, including discontiguous parts
- Throws:
CorruptDataException
-
getConsumedSizeInBytesWithHeader
public static UDATA getConsumedSizeInBytesWithHeader(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object) throws CorruptDataException
Same as getSizeInBytesWithHeader, except it takes into account object alignment and minimum object size- Parameters:
object
- Pointer to an object- Returns:
- The consumed heap size of an object, in bytes, including the header
- Throws:
CorruptDataException
-
getSizeInSlotsWithHeader
public UDATA getSizeInSlotsWithHeader(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object) throws CorruptDataException
Returns the size of an object, in slots, including the header.- Parameters:
object
- Pointer to an object- Returns:
- The size of an object, in slots, including the header
- Throws:
CorruptDataException
-
getConsumedSizeInSlotsWithHeader
public UDATA getConsumedSizeInSlotsWithHeader(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object) throws CorruptDataException
Same as getSizeInSlotsWithHeader, except it takes into account object alignment and minimum object size- Parameters:
object
- Pointer to an object- Returns:
- The consumed heap size of an object, in slots, including the header
- Throws:
CorruptDataException
-
getAge
public static U32 getAge(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object) throws CorruptDataException
Returns the age of an object.- Parameters:
object
- Pointer to an object- Returns:
- The age of the object
- Throws:
CorruptDataException
-
isRemembered
public static boolean isRemembered(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object) throws CorruptDataException
Returns TRUE if an object is remembered, FALSE otherwise.- Parameters:
object
- Pointer to an object- Returns:
- TRUE if an object is remembered, FALSE otherwise
- Throws:
CorruptDataException
-
getRememberedBits
public static UDATA getRememberedBits(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object) throws CorruptDataException
Returns the collector bits from object's header.- Parameters:
object
- Pointer to an object- Returns:
- collector bits
- Throws:
CorruptDataException
-
isOld
public static boolean isOld(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object) throws CorruptDataException
Returns TRUE if an object is old, FALSE otherwise.- Parameters:
object
- Pointer to an object- Returns:
- TRUE if an object is in the old area, FALSE otherwise
- Throws:
CorruptDataException
-
getSizeInElements
public static UDATA getSizeInElements(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object) throws IllegalArgumentException, CorruptDataException
Returns the size of an indexable object in elements.- Parameters:
array
- Pointer to the indexable object whose size is required- Returns:
- Size of object in elements
- Throws:
IllegalArgumentException
- if the object is not an arrayCorruptDataException
-
getScanType
public static long getScanType(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object) throws CorruptDataException
- Throws:
CorruptDataException
-
hasBeenHashed
public static boolean hasBeenHashed(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object) throws CorruptDataException
Returns TRUE if an object has been hashed, FALSE otherwise.- Parameters:
object
- Pointer to an object- Returns:
- TRUE if an object has been hashed, FALSE otherwise
- Throws:
CorruptDataException
-
hasBeenMoved
public static boolean hasBeenMoved(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object) throws CorruptDataException
Returns TRUE if an object has been moved after being hashed, FALSE otherwise.- Parameters:
object
- Pointer to an object- Returns:
- TRUE if an object has been moved after being hashed, FALSE otherwise
- Throws:
CorruptDataException
-
getObjectHashCode
public static I32 getObjectHashCode(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object) throws CorruptDataException
Determine the basic hash code for the specified object.- Parameters:
object
- [in] the object to be hashed- Returns:
- the persistent, basic hash code for the object
- Throws:
CorruptDataException
-
getHashcodeOffset
public static UDATA getHashcodeOffset(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object) throws CorruptDataException
- Throws:
CorruptDataException
-
getDataSizeInBytes
public static UDATA getDataSizeInBytes(com.ibm.j9ddr.vm29.pointer.generated.J9IndexableObjectPointer array) throws CorruptDataException
Returns the size of data in an indexable object, in bytes, including leaves, excluding the header.- Parameters:
array
- pointer to the indexable object whose size is required- Returns:
- the size of an object in bytes excluding the header
- Throws:
CorruptDataException
-
getHeaderSize
public static UDATA getHeaderSize(com.ibm.j9ddr.vm29.pointer.generated.J9ObjectPointer object) throws CorruptDataException
Returns the size of an object header, in bytes.- Parameters:
object
- Pointer to an object- Returns:
- The size of an object header, in bytes.
- Throws:
CorruptDataException
-
getElementAddress
public static VoidPointer getElementAddress(com.ibm.j9ddr.vm29.pointer.generated.J9IndexableObjectPointer indexableObjectPointer, int elementIndex, int elementSize) throws CorruptDataException
Returns the address of an element.- Parameters:
indexableObjectPointer
- Pointer to a J9 indexable objectelementIndex
- Index of the elementelementSize
- Size of the element- Returns:
- The address of an element.
- Throws:
CorruptDataException
-
findRegionForPointer
public static GCHeapRegionDescriptor findRegionForPointer(com.ibm.j9ddr.vm29.pointer.generated.J9JavaVMPointer javaVM, GCHeapRegionManager hrm, AbstractPointer pointer, GCHeapRegionDescriptor region)
Returns the heap region of a pointer.- Parameters:
javaVM
- J9JavaVMPointerhrm
- The gc heap region managerpointer
- Any abstract pointerregion
- A gc heap region descriptor- Returns:
- The heap region descriptor of the given pointer.
-
regionForAddress
public static GCHeapRegionDescriptor regionForAddress(com.ibm.j9ddr.vm29.pointer.generated.J9JavaVMPointer javaVM, GCHeapRegionManager hrm, AbstractPointer pointer)
Returns the heap region for address of a pointer.- Parameters:
javaVM
- J9JavaVMPointerhrm
- The gc heap region managerpointer
- Any abstract pointer- Returns:
- The heap region descriptor for address of a pointer.
-
isPointerInRegion
public static boolean isPointerInRegion(AbstractPointer pointer, GCHeapRegionDescriptor region)
Returns true if a pointer is in stored in specified region.- Parameters:
pointer
- Any abstract pointerregion
- Descriptor for a region in heap- Returns:
- If the AbstractPointer pointer is in stored in the given region in heap.
-
isPointerInHeap
public static boolean isPointerInHeap(com.ibm.j9ddr.vm29.pointer.generated.J9JavaVMPointer javaVM, AbstractPointer pointer)
Returns true if a pointer is in stored in heap.- Parameters:
javaVM
- J9JavaVMPointerpointer
- Any abstract pointer- Returns:
- If the AbstractPointer pointer is in stored in heap.
-
isInlineContiguousArraylet
public static boolean isInlineContiguousArraylet(com.ibm.j9ddr.vm29.pointer.generated.J9IndexableObjectPointer arrayPtr) throws CorruptDataException
- Parameters:
arrayPtr
- array object we are checking for isInlineContiguousArraylet- Throws:
CorruptDataException
- If there's a problem accessing the layout of the indexable object
-
hasCorrectDataAddrPointer
public static boolean hasCorrectDataAddrPointer(com.ibm.j9ddr.vm29.pointer.generated.J9IndexableObjectPointer arrayPtr) throws CorruptDataException
Determine the validity of the data address belonging to arrayPtr.- Parameters:
arrayPtr
- array object who's data address validity we are checking- Returns:
- true if the data address of arrayPtr is valid, false otherwise
- Throws:
CorruptDataException
- if there's a problem accessing the indexable object dataAddr field
-
-