asm.emitMOV_Reg_RegDisp (T1, S0, VM_Entrypoints.JNIRefsSavedFPField.getOffsetAsInt()); asm.emitMOV_RegDisp_Reg (S0, VM_Entrypoints.JNIRefsTopField.getOffsetAsInt(), T1); asm.emitSUB_RegDisp_Imm (S0, VM_Entrypoints.JNIRefsTopField.getOffsetAsInt(), WORDSIZE);
asm.emitMOV_Reg_RegDisp (T1, S0, VM_Entrypoints.JNIRefsSavedFPField.getOffset()); asm.emitMOV_RegDisp_Reg (S0, VM_Entrypoints.JNIRefsTopField.getOffset(), T1); asm.emitSUB_RegDisp_Imm (S0, VM_Entrypoints.JNIRefsTopField.getOffset(), WORDSIZE);
  static void popJNIrefForEpilog(VM_Assembler asm) {    // on entry, S0 contains a pointer to the VM_Thread.jniEnv    // set TOP to point to entry below the last frame    asm.emitMOV_Reg_RegDisp (T1, S0, VM_Entrypoints.JNIRefsSavedFPField.getOffsetAsInt());    // ebx <- JNIRefsSavedFP    asm.emitMOV_RegDisp_Reg (S0, VM_Entrypoints.JNIRefsTopField.getOffsetAsInt(), T1);        // JNIRefsTop <- ebx    asm.emitSUB_RegDisp_Imm (S0, VM_Entrypoints.JNIRefsTopField.getOffsetAsInt(), WORDSIZE);  // JNIRefsTop -= 4    // load savedFP with the index to the last frame    asm.emitMOV_Reg_RegDisp (EBX, S0, VM_Entrypoints.JNIRefsField.getOffsetAsInt());          // ebx <- JNIRefs base    asm.emitMOV_Reg_RegIdx  (EBX, EBX, T1, asm.BYTE, 0);                                 // ebx <- (JNIRefs base + SavedFP index)    asm.emitMOV_RegDisp_Reg (S0, VM_Entrypoints.JNIRefsSavedFPField.getOffsetAsInt(), EBX);   // JNIRefsSavedFP <- ebx  }