ClassDump(ClassDumpSegment segment, long offset) { super(offset); classDumpSegment = segment; assert getHprofBuffer().get(offset) == HprofHeap.CLASS_DUMP; }
long getOffset() { int idSize = dumpClass.getHprofBuffer().getIDSize(); return fileOffset + 1 + idSize + 4 + 4 + idSize; } }
public long getInstanceId() { HprofByteBuffer dumpBuffer = instance.dumpClass.getHprofBuffer(); return dumpBuffer.getID(fileOffset); } }
private long getArrayStartOffset() { int idSize = dumpClass.getHprofBuffer().getIDSize(); return fileOffset + 1 + idSize + 4 + 4 + 1; }
private int getInstanceFieldValuesOffset() { int idSize = dumpClass.getHprofBuffer().getIDSize(); return 1 + idSize + 4 + idSize + 4; }
byte getValueType() { HprofByteBuffer buffer = classDump.getHprofBuffer(); return buffer.get(fileOffset + buffer.getIDSize()); } }
public int getLength() { HprofByteBuffer dumpBuffer = dumpClass.getHprofBuffer(); int idSize = dumpBuffer.getIDSize(); return dumpBuffer.getInt(fileOffset + 1 + idSize + 4); }
Object getTypeValue() { HprofByteBuffer dumpBuffer = classDump.getHprofBuffer(); long position = fileOffset + classDump.classDumpSegment.fieldTypeOffset; byte type = dumpBuffer.get(position); return HprofInstanceValue.getTypeValue(dumpBuffer, position + 1, type); } }
private List<Field> computeFields() { HprofByteBuffer buffer = getHprofBuffer(); long offset = fileOffset + getInstanceFieldOffset(); int i; int fields = buffer.getShort(offset); List<Field> filedsList = new ArrayList<Field>(fields); for (i = 0; i < fields; i++) { filedsList.add(new HprofField(this, offset + 2 + (i * classDumpSegment.fieldSize))); } return filedsList; }
Object getTypeValue() { byte type = field.getValueType(); HprofByteBuffer dumpBuffer = instance.dumpClass.getHprofBuffer(); return getTypeValue(dumpBuffer, fileOffset, type); }
private byte getType() { HprofByteBuffer dumpBuffer = dumpClass.getHprofBuffer(); int idSize = dumpBuffer.getIDSize(); return dumpBuffer.get(fileOffset + 1 + idSize + 4 + 4); } }
public JavaClass getSuperClass() { long superClassId = getHprofBuffer().getID(fileOffset + classDumpSegment.superClassIDOffset); return classDumpSegment.getClassDumpByID(superClassId); }
public int getInstanceSize() { if (isArray()) { return -1; } return classDumpSegment.getMinimumInstanceSize() + getHprofBuffer().getInt(fileOffset + classDumpSegment.instanceSizeOffset); }
char[] getChars(int start, int length) { assert getType() == HprofHeap.CHAR; char[] chars = new char[length]; long offset = getArrayStartOffset() + ((long)start * (long)charSize); HprofByteBuffer dumpBuffer = dumpClass.getHprofBuffer(); for (int i = 0; i < length; i++) { chars[i] = dumpBuffer.getChar(offset + (i * charSize)); } return chars; }
@Override public List<Long> getValueIDs() { HprofByteBuffer dumpBuffer = dumpClass.getHprofBuffer(); HprofHeap heap = dumpClass.getHprof(); return new ObjectIdArrayLazyList(heap, dumpBuffer, getLength(), getOffset()); }
public List<Instance> getValuesSortedByID() { HprofByteBuffer dumpBuffer = dumpClass.getHprofBuffer(); HprofHeap heap = dumpClass.getHprof(); return new ObjectArraySortedList(heap, dumpBuffer, getLength(), getOffset()); }
public List<Instance> getValues() { HprofByteBuffer dumpBuffer = dumpClass.getHprofBuffer(); HprofHeap heap = dumpClass.getHprof(); return new ObjectArrayLazyList(heap, dumpBuffer, getLength(), getOffset()); }
int getConstantPoolSize() { long cpOffset = fileOffset + classDumpSegment.constantPoolSizeOffset; HprofByteBuffer buffer = getHprofBuffer(); int cpRecords = buffer.getShort(cpOffset); HprofHeap heap = getHprof(); cpOffset += 2; for (int i = 0; i < cpRecords; i++) { byte type = buffer.get(cpOffset + 2); int size = heap.getValueSize(type); cpOffset += (2 + 1 + size); } return (int) (cpOffset - (fileOffset + classDumpSegment.constantPoolSizeOffset)); }
public String getName() { long nameID = classDump.getHprofBuffer().getID(fileOffset); return classDump.getHprof().getStringSegment().getStringByID(nameID); }
public List<Object> getValues() { HprofByteBuffer dumpBuffer = dumpClass.getHprofBuffer(); HprofHeap heap = dumpClass.getHprof(); byte type = getType(); long offset = getArrayStartOffset(); return new PrimitiveArrayLazyList(dumpBuffer, getLength(), offset, heap.getValueSize(type), type); }