VM_Field [] df = c.getDeclaredFields(); for (int i=0; i<df.length; i++ ) { VM_Field n = df[i]; if (name == n.getName() && desc == n.getDescriptor() && n.isLoaded()) { VM_FieldDictionary.setValue(f.getDictionaryId(), n); return n; }
VM_Field it = c.findDeclaredField(name, desc); if (it != null) { VM_FieldDictionary.setValue(f.getDictionaryId(), it); return it;
  static VM_Field repairField(VM_Field f) {    VM_Field newf = VM_FieldDictionary.getValue(f.getDictionaryId());    if (newf != f) return newf;  // already done!    VM_Class c = f.getDeclaringClass();    VM_Atom name = f.getName();    VM_Atom desc = f.getDescriptor();    while ((c = c.getSuperClass()) != null) {      VM_Field [] df = c.getDeclaredFields();      for (int i=0; i<df.length; i++ ) {        VM_Field n = df[i];        if (name == n.getName() && desc == n.getDescriptor() && n.isLoaded()) {          VM_FieldDictionary.setValue(f.getDictionaryId(), n);          return n;        }      }    }    throw new NoSuchFieldError(f.getDeclaringClass()+": "+name+" "+desc+" no such field found");  }