if (verboseJNI) VM.sysWrite("JNI called: GetStaticFieldID  \n");
if (traceJNI) VM.sysWrite("JNI called: GetStaticFieldID  \n");
  private static int GetStaticFieldID(int envJREF, int classJREF,                                       VM_Address fieldNameAddress, VM_Address descriptorAddress) {    if (verboseJNI) VM.sysWrite("JNI called: GetStaticFieldID  \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.GetStaticFieldID: reflection on field " + fieldString + ", type " + descriptorString + "\n");      // list of all instance fields including superclasses      VM_Field[] fields = java.lang.JikesRVMSupport.getTypeForClass(cls).getStaticFields();      VM_Field field = null;      for (int i = 0; i < fields.length; ++i) {        field = fields[i];        if (field.getName() == fieldName && field.getDescriptor() == descriptor)          break;      }      if (field==null) {        env.recordException(new NoSuchFieldError());        return 0;      } else {        return field.getOffset() ;           }    } catch (Throwable unexpected) {      env = VM_Thread.getCurrentThread().getJNIEnv();      env.recordException(unexpected);      return 0;    }  }