ref_address = VM_Magic.objectAsAddress(jniRefs).add(jniNextRef);
VM_Address ref_address = VM_Magic.objectAsAddress(jniRefs).add(jniNextRef);
  public VM_Address getNextReferenceAddress() {    int nextFP;    VM_Address ref_address;    // first report jni refs in the current frame in the jniRef side stack    // until all in the frame are reported    //    if (jniNextRef > jniFramePtr) {      ref_address = VM_Magic.objectAsAddress(jniRefs).add(jniNextRef);      jniNextRef -= BYTES_IN_ADDRESS;      return ref_address;    }    // report location of saved processor reg in the Java to C frame    if (!jniSavedProcessorRegAddr.isZero()) {      ref_address = jniSavedProcessorRegAddr;      jniSavedProcessorRegAddr = VM_Address.zero();      return ref_address;    }    // no more refs to report, before returning 0, setup for processing    // the next jni frame, if any    // jniNextRef -> savedFramePtr for another "frame" of refs for another    // sequence of Native C frames lower in the stack, or to 0 if this is the    // last jni frame in the JNIRefs stack.  If more frames, initialize for a    // later scan of those refs.    //    if (jniFramePtr > 0) {      jniFramePtr = jniRefs.get(jniFramePtr >> LOG_BYTES_IN_ADDRESS).toInt();      jniNextRef = jniNextRef - BYTES_IN_ADDRESS;    }    // set register locations for non-volatiles to point to registers saved in    // the JNI transition frame at a fixed negative offset from the callers FP.    // the save non-volatiles are EBX, EBP,  and EDI (JTOC)    //    registerLocations.set(JTOC, framePtr.add(VM_JNICompiler.EDI_SAVE_OFFSET));    registerLocations.set(EBX, framePtr.add(VM_JNICompiler.EBX_SAVE_OFFSET));    registerLocations.set(EBP, framePtr.add(VM_JNICompiler.EBP_SAVE_OFFSET));    return VM_Address.zero();  // no more refs to report  } //- implements VM_GCMapIterator