use of com.squareup.haha.perflib.Field in project leakcanary by square.
the class HahaHelperTest method defaultToZeroStringOffsetWhenHeapDumpInstanceIsMissingOffsetValue.
@Test
public void defaultToZeroStringOffsetWhenHeapDumpInstanceIsMissingOffsetValue() {
buffer.setIntsToRead(COUNT_VALUE, VALUE_ARRAY_INSTANCE_ID);
buffer.setStringsToRead("abcdef");
addStringClassToSnapshotWithFields(snapshot, new Field[] { new Field(Type.INT, "count"), new Field(Type.OBJECT, "value") });
ClassInstance stringInstance = createStringInstance();
createCharArrayValueInstance();
String actual = HahaHelper.asString(stringInstance);
assertTrue(actual.equals("abcde"));
}
use of com.squareup.haha.perflib.Field in project leakcanary by square.
the class HeapAnalyzer method describeFields.
private List<String> describeFields(Instance instance) {
List<String> fields = new ArrayList<>();
if (instance instanceof ClassObj) {
ClassObj classObj = (ClassObj) instance;
for (Map.Entry<Field, Object> entry : classObj.getStaticFieldValues().entrySet()) {
Field field = entry.getKey();
Object value = entry.getValue();
fields.add("static " + field.getName() + " = " + value);
}
} else if (instance instanceof ArrayInstance) {
ArrayInstance arrayInstance = (ArrayInstance) instance;
if (arrayInstance.getArrayType() == Type.OBJECT) {
Object[] values = arrayInstance.getValues();
for (int i = 0; i < values.length; i++) {
fields.add("[" + i + "] = " + values[i]);
}
}
} else {
ClassObj classObj = instance.getClassObj();
for (Map.Entry<Field, Object> entry : classObj.getStaticFieldValues().entrySet()) {
fields.add("static " + fieldToString(entry));
}
ClassInstance classInstance = (ClassInstance) instance;
for (ClassInstance.FieldValue field : classInstance.getValues()) {
fields.add(fieldToString(field));
}
}
return fields;
}
Aggregations