protected List<IField> findDeclaredField(Atom name) { List<IField> result = new ArrayList<>(1); if (instanceFields != null) { for (IField instanceField : instanceFields) { if (instanceField.getName() == name) { result.add(instanceField); } } } if (staticFields != null) { for (IField staticField : staticFields) { if (staticField.getName() == name) { result.add(staticField); } } } return result; }
protected List<IField> findDeclaredField(Atom name) { List<IField> result = new ArrayList<>(1); if (instanceFields != null) { for (IField instanceField : instanceFields) { if (instanceField.getName() == name) { result.add(instanceField); } } } if (staticFields != null) { for (IField staticField : staticFields) { if (staticField.getName() == name) { result.add(staticField); } } } return result; }
@Override public String descString() { return field.getDeclaringClass().toString() + '.' + field.getName().toString(); }
@Override public String descString() { return field.getDeclaringClass().toString() + '.' + field.getName().toString(); }
Collection<IField> lookupFields(IClassLoader cl) { Collection<IField> matching = new LinkedList<>(); IClass c = cl.lookupClass(TypeName.findOrCreate(className)); if(c == null) return matching; Atom atom = Atom.findOrCreateUnicodeAtom(memberName); Collection<IField> allFields = c.getAllFields(); for(IField f: allFields) { if(f.getName().equals(atom)) { matching.add(f); } } return matching; } }
@Override public PointerKey getPointerKeyForInstanceField(InstanceKey I, IField field) { if (field == null) { throw new IllegalArgumentException("field is null"); } IField resolveAgain = I.getConcreteType().getField(field.getName(), field.getFieldTypeReference().getName()); if (resolveAgain != null) { field = resolveAgain; } return new InstanceFieldKey(I, field); }
@Override public PointerKey getPointerKeyForInstanceField(InstanceKey I, IField field) { if (field == null) { throw new IllegalArgumentException("field is null"); } IField resolveAgain = I.getConcreteType().getField(field.getName(), field.getFieldTypeReference().getName()); if (resolveAgain != null) { field = resolveAgain; } return new InstanceFieldKey(I, field); }
Assert.assertTrue(cls.getName() + " has field " + fld.getName(), instanceFields.contains(Pair.make( cls.getName().toString(), fld.getName().toString()))); Assert.assertTrue(cls.getName() + " has static field " + fld.getName(), staticFields.contains(Pair.make(cls.getName() .toString(), fld.getName().toString())));