77 lines
2.3 KiB
Java
77 lines
2.3 KiB
Java
package com.squareup.haha.perflib;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
/* loaded from: classes.dex */
|
|
public class ClassInstance extends Instance {
|
|
private final long mValuesOffset;
|
|
|
|
public static class FieldValue {
|
|
private Field mField;
|
|
private Object mValue;
|
|
|
|
public FieldValue(Field field, Object obj) {
|
|
this.mField = field;
|
|
this.mValue = obj;
|
|
}
|
|
|
|
public Field getField() {
|
|
return this.mField;
|
|
}
|
|
|
|
public Object getValue() {
|
|
return this.mValue;
|
|
}
|
|
}
|
|
|
|
public ClassInstance(long j, StackTrace stackTrace, long j2) {
|
|
super(j, stackTrace);
|
|
this.mValuesOffset = j2;
|
|
}
|
|
|
|
@Override // com.squareup.haha.perflib.Instance
|
|
public final void accept(Visitor visitor) {
|
|
visitor.visitClassInstance(this);
|
|
for (FieldValue fieldValue : getValues()) {
|
|
if (fieldValue.getValue() instanceof Instance) {
|
|
if (!this.mReferencesAdded) {
|
|
((Instance) fieldValue.getValue()).addReference(fieldValue.getField(), this);
|
|
}
|
|
visitor.visitLater(this, (Instance) fieldValue.getValue());
|
|
}
|
|
}
|
|
this.mReferencesAdded = true;
|
|
}
|
|
|
|
List<FieldValue> getFields(String str) {
|
|
ArrayList arrayList = new ArrayList();
|
|
for (FieldValue fieldValue : getValues()) {
|
|
if (fieldValue.getField().getName().equals(str)) {
|
|
arrayList.add(fieldValue);
|
|
}
|
|
}
|
|
return arrayList;
|
|
}
|
|
|
|
@Override // com.squareup.haha.perflib.Instance
|
|
public boolean getIsSoftReference() {
|
|
return getClassObj().getIsSoftReference();
|
|
}
|
|
|
|
public List<FieldValue> getValues() {
|
|
ArrayList arrayList = new ArrayList();
|
|
getBuffer().setPosition(this.mValuesOffset);
|
|
for (ClassObj classObj = getClassObj(); classObj != null; classObj = classObj.getSuperClassObj()) {
|
|
for (Field field : classObj.getFields()) {
|
|
arrayList.add(new FieldValue(field, readValue(field.getType())));
|
|
}
|
|
}
|
|
return arrayList;
|
|
}
|
|
|
|
public final String toString() {
|
|
return String.format("%s@%d (0x%x)", getClassObj().getClassName(), Long.valueOf(getUniqueId()), Long.valueOf(getUniqueId()));
|
|
}
|
|
}
|