registers.gprs[JTOC] = VM_Magic.getMemoryWord(fp.add(VM_Compiler.JTOC_SAVE_OFFSET)); registers.gprs[EBX] = VM_Magic.getMemoryWord(fp.add(VM_Compiler.EBX_SAVE_OFFSET));
registers.gprs[JTOC] = VM_Magic.getMemoryInt(fp.add(VM_Compiler.JTOC_SAVE_OFFSET)); registers.gprs[EBX] = VM_Magic.getMemoryInt(fp.add(VM_Compiler.EBX_SAVE_OFFSET));
  public void unwindStackFrame(VM_CompiledMethod compiledMethod, VM_Registers registers) {    VM_NormalMethod method = (VM_NormalMethod)compiledMethod.getMethod();    VM_Address fp     = registers.getInnermostFramePointer();    if (method.isSynchronized()) { // release the lock, if it is being held      VM_Address ip = registers.getInnermostInstructionAddress();      int instr = ip.diff(VM_Magic.objectAsAddress(compiledMethod.getInstructions())).toInt();      int lockOffset = ((VM_BaselineCompiledMethod)compiledMethod).getLockAcquisitionOffset();      if (instr > lockOffset) { // we actually have the lock, so must unlock it.	Object lock;	if (method.isStatic()) {	  lock = method.getDeclaringClass().getClassForType();	} else {	  lock = VM_Magic.addressAsObject(VM_Magic.getMemoryAddress(fp.add(VM_Compiler.getFirstLocalOffset(method))));	}	VM_ObjectModel.genericUnlock(lock);      }    }    // Restore nonvolatile registers used by the baseline compiler.    if (VM.VerifyAssertions) VM._assert(VM_Compiler.SAVED_GPRS == 2);    registers.gprs[JTOC] = VM_Magic.getMemoryWord(fp.add(VM_Compiler.JTOC_SAVE_OFFSET));    registers.gprs[EBX] = VM_Magic.getMemoryWord(fp.add(VM_Compiler.EBX_SAVE_OFFSET));        registers.unwindStackFrame();  }