env.recordException(new NoSuchFieldError());
env.recordException(new NoSuchFieldError(fieldString + ", " + descriptorString + " of " + cls));
  private static int GetFieldID (int envJREF, int classJREF, 				 VM_Address fieldNameAddress, VM_Address descriptorAddress) {    if (verboseJNI) VM.sysWrite("JNI called: GetFieldID  \n");          VM_JNIEnvironment  env;    try {      env = VM_Thread.getCurrentThread().getJNIEnv();      Class cls = (Class) env.getJNIRef(classJREF);            String fieldString = VM_JNIEnvironment.createStringFromC(fieldNameAddress);      VM_Atom fieldName = VM_Atom.findOrCreateAsciiAtom(fieldString);            String descriptorString = VM_JNIEnvironment.createStringFromC(descriptorAddress);      VM_Atom descriptor = VM_Atom.findOrCreateAsciiAtom(descriptorString);            // VM.sysWrite("JNI.GetFieldID: reflection on instance field " + fieldString + ", type " + descriptorString + "\n");            // list of all instance fields including superclasses      VM_Field[] fields = cls.getVMType().getInstanceFields();      int i = 0;      int length = fields.length;      for (i = 0; i < length; ++i) {      	if (fields[i].getName() == fieldName && fields[i].getDescriptor() == descriptor)	  return i+1;                  // return index as 1-based to avoid the 0 value used for not found      }      // create exception and return 0 if not found      env.recordException(new NoSuchFieldError());      return 0;                          } catch (Throwable unexpected) {      env = VM_Thread.getCurrentThread().getJNIEnv();      env.recordException(unexpected);      return 0;                          }  }