registers.gprs[NONVOLATILE_GPRS[i]] = VM_Magic.getMemoryWord(fp.sub(frameOffset));
registers.gprs[NONVOLATILE_GPRS[i]] = VM_Magic.getMemoryInt(fp.sub(frameOffset));
  public void unwindStackFrame(VM_CompiledMethod compiledMethod, 			VM_Registers registers) {    VM_Address fp = registers.getInnermostFramePointer();    VM_OptCompiledMethod optMethod = (VM_OptCompiledMethod)compiledMethod;        if (TRACE) {      VM.sysWrite("Registers before unwinding frame for ");      VM.sysWrite(optMethod.getMethod());      VM.sysWrite("\n");      for (int i=0; i<NUM_GPRS; i++) {	VM.sysWrite(GPR_NAMES[i]);	VM.sysWrite(" = ");	VM.sysWrite(registers.gprs[i]);	VM.sysWrite("\n");      }    }    // restore non-volatile registers    int frameOffset = optMethod.getUnsignedNonVolatileOffset();    for (int i = optMethod.getFirstNonVolatileGPR(); 	 i<NUM_NONVOLATILE_GPRS; 	 i++, frameOffset += 4) {      registers.gprs[NONVOLATILE_GPRS[i]] = VM_Magic.getMemoryWord(fp.sub(frameOffset));    }    if (VM.VerifyAssertions) VM._assert(NUM_NONVOLATILE_FPRS == 0);        registers.unwindStackFrame();    if (TRACE) {      VM.sysWrite("Registers after unwinding frame for ");      VM.sysWrite(optMethod.getMethod());      VM.sysWrite("\n");      for (int i=0; i<NUM_GPRS; i++) {	VM.sysWrite(GPR_NAMES[i]);	VM.sysWrite(" = ");	VM.sysWrite(registers.gprs[i]);	VM.sysWrite("\n");      }    }  }