public Field getField(String name) { Iterator<Field> fIt = getFields().iterator(); while (fIt.hasNext()) { Field field = (Field) fIt.next(); if (field.getName().equals(name)) { return field; } } return null; }
boolean canContainItself() { if (getInstancesCount()>=2 && !CANNOT_CONTAIN_ITSELF.contains(getName())) { Iterator<Field> fieldsIt = getAllInstanceFields().iterator(); while(fieldsIt.hasNext()) { Field f = (Field) fieldsIt.next(); if (f.getType().getName().equals("object")) { // NOI18N return true; } } } if (DEBUG) { if (instances>10) System.out.println(getName()+" cannot contain itself "+instances); // NOI18N } return false; }
@SuppressWarnings("unused") private static JavaClass hostType(JavaClass type, String pathSpec) { if (pathSpec.startsWith(".")) { pathSpec = pathSpec.substring(1); } for(Field f: type.getFields()) { if (!f.isStatic() && f.getName().equals(pathSpec)) { return f.getDeclaringClass(); } } if (type.getSuperClass() != null) { return hostType(type.getSuperClass(), pathSpec); } return null; }
protected boolean isBlackListed(Field field) { String tn = field.getDeclaringClass().getName() + "#" + field.getName(); return blacklist.contains(tn); }
for(Instance i: HeapPath.collect(obj, shortPath)) { for(FieldValue fv: i.getFieldValues()) { if ((fieldName == null && (!fv.getField().isStatic())) || (fv.getField().getName().equals(fieldName))) { if (fv instanceof ObjectFieldValue) { return valueOf(((ObjectFieldValue) fv).getInstance()); return (T) i.getValueOfField(fv.getField().getName());
protected boolean isBlackListed(Field field) { String tn = field.getDeclaringClass().getName() + "#" + field.getName(); return blacklist.contains(tn); }
private Field computeReferentFiled() { JavaClass reference = heap.getJavaClassByName(JAVA_LANG_REF_REFERENCE); Iterator<Field> fieldRef = reference.getFields().iterator(); while (fieldRef.hasNext()) { Field f = (Field) fieldRef.next(); if (f.getName().equals(REFERENT_FILED_NAME)) { return f; } } throw new IllegalArgumentException("reference field not found in " + reference.getName()); // NOI18N }
@SuppressWarnings("unused") private static JavaClass hostType(JavaClass type, String pathSpec) { if (pathSpec.startsWith(".")) { pathSpec = pathSpec.substring(1); } for(Field f: type.getFields()) { if (!f.isStatic() && f.getName().equals(pathSpec)) { return f.getDeclaringClass(); } } if (type.getSuperClass() != null) { return hostType(type.getSuperClass(), pathSpec); } return null; }
boolean canContainItself() { if (getInstancesCount()>=2 && !CANNOT_CONTAIN_ITSELF.contains(getName())) { Iterator fieldsIt = getAllInstanceFields().iterator(); while(fieldsIt.hasNext()) { Field f = (Field) fieldsIt.next(); if (f.getType().getName().equals("object")) { // NOI18N return true; } } } if (DEBUG) { if (instances>10) System.out.println(getName()+" cannot contain itself "+instances); // NOI18N } return false; }
@Override public Iterator<Instance> walk(Instance instance) { List<Instance> result = new ArrayList<Instance>(); for(FieldValue fv: instance.getFieldValues()) { if (fieldName == null || fieldName.equals(fv.getField().getName())) { if (fv instanceof ObjectFieldValue) { result.add(((ObjectFieldValue) fv).getInstance()); } } } return result.iterator(); }
for(Instance i: HeapPath.collect(obj, shortPath)) { for(FieldValue fv: i.getFieldValues()) { if ((fieldName == null && (!fv.getField().isStatic())) || (fv.getField().getName().equals(fieldName))) { if (fv instanceof ObjectFieldValue) { return valueOf(((ObjectFieldValue) fv).getInstance()); return (T) i.getValueOfField(fv.getField().getName());
boolean canContainItself() { if (getInstancesCount()>=2 && !CANNOT_CONTAIN_ITSELF.contains(getName())) { Iterator<Field> fieldsIt = getAllInstanceFields().iterator(); while(fieldsIt.hasNext()) { Field f = (Field) fieldsIt.next(); if (f.getType().getName().equals("object")) { // NOI18N return true; } } } if (DEBUG) { if (instances>10) System.out.println(getName()+" cannot contain itself "+instances); // NOI18N } return false; }
@Override public Iterator<Move> track(Instance instance) { List<Move> result = new ArrayList<Move>(); for(FieldValue fv: instance.getFieldValues()) { if (fieldName == null || fieldName.equals(fv.getField().getName())) { if (fv instanceof ObjectFieldValue) { result.add(new Move("." + fv.getField().getName(), ((ObjectFieldValue) fv).getInstance())); } } } return result.iterator(); }
public Object getValueOfStaticField(String name) { Iterator<FieldValue> fIt = getStaticFieldValues().iterator(); while (fIt.hasNext()) { FieldValue fieldValue = (FieldValue) fIt.next(); if (fieldValue.getField().getName().equals(name)) { if (fieldValue instanceof HprofFieldObjectValue) { return ((HprofFieldObjectValue) fieldValue).getInstance(); } else { return ((HprofFieldValue) fieldValue).getTypeValue(); } } } return null; }
private static Instance getField(Instance i, String field) { for(FieldValue fv: i.getFieldValues()) { if (fv instanceof ObjectFieldValue && field.equals(fv.getField().getName())) { return ((ObjectFieldValue)fv).getInstance(); } } return null; }
public Object getValueOfField(String name) { Iterator<FieldValue> fIt = getFieldValues().iterator(); FieldValue matchingFieldValue = null; while (fIt.hasNext()) { FieldValue fieldValue = (FieldValue) fIt.next(); if (fieldValue.getField().getName().equals(name)) { matchingFieldValue = fieldValue; } } if (matchingFieldValue == null) { return null; } if (matchingFieldValue instanceof HprofInstanceObjectValue) { return ((HprofInstanceObjectValue) matchingFieldValue).getInstance(); } else { return ((HprofInstanceValue) matchingFieldValue).getTypeValue(); } }
for(FieldValue f: obj.getFieldValues()) { Field ff = f.getField(); if ("value".equals(ff.getName())) { PrimitiveArrayInstance chars = (PrimitiveArrayInstance) ((ObjectFieldValue)f).getInstance(); text = new char[chars.getLength()]; else if ("offset".equals(ff.getName())) { offset = Integer.valueOf(f.getValue()); else if ("count".equals(ff.getName())) { len = Integer.valueOf(f.getValue());
/** * Process entry point and blacklist configuration */ public void prepare() { for(JavaClass jc: heap.getAllClasses()) { for(TypeFilterStep it: interestingTypes) { if (it.evaluate(jc)) { rootClasses.add(jc.getName()); } } for(TypeFilterStep bt: blacklistedTypes) { if (bt.evaluate(jc)) { blacklist.add(jc.getName()); } } for(PathStep[] bp: blacklistedMethods) { TypeFilterStep ts = (TypeFilterStep) bp[0]; String fn = ((FieldStep) bp[1]).getFieldName(); if (ts.evaluate(jc)) { for(Field f: jc.getFields()) { if (fn == null || fn.equals(f.getName())) { blacklist.add(jc.getName() + "#" + f.getName()); } } } } } }