registers.gprs.set(i, fp.add(frameOffset).loadWord()); frameOffset += BYTES_IN_ADDRESS;
registers.gprs.set(i, fp.loadWord(frameOffset)); frameOffset = frameOffset.add(BYTES_IN_ADDRESS);
  public void unwindStackFrame(VM_CompiledMethod cm, VM_Registers registers) {    Address fp = registers.getInnermostFramePointer();    VM_OptCompiledMethod compiledMethod = (VM_OptCompiledMethod)cm;    // restore non-volatile registers    int frameOffset = compiledMethod.getUnsignedNonVolatileOffset();    int firstInteger = compiledMethod.getFirstNonVolatileGPR();    if (firstInteger >= 0) {      //-#if RVM_FOR_64_ADDR      frameOffset = (frameOffset + 7) & ~7;      //-#endif      for (int i = firstInteger; i < 32; i++) {        registers.gprs.set(i, fp.add(frameOffset).loadWord());        frameOffset += BYTES_IN_ADDRESS;      }    }    int firstFloat = compiledMethod.getFirstNonVolatileFPR();    if (firstFloat >= 0) {      frameOffset = (frameOffset + 7) & ~7;  // align pointer for doubles      for (int i = firstFloat; i < 32; i++) {        long temp = VM_Magic.getLongAtOffset(VM_Magic.addressAsObject(fp), frameOffset);        registers.fprs[i] = VM_Magic.longBitsAsDouble(temp);        frameOffset += BYTES_IN_DOUBLE;      }    }    registers.unwindStackFrame();  }