VM_Entrypoints.framePointerField.getOffsetAsInt(),
VM_Entrypoints.framePointerField.getOffset(),
  void insertNormalPrologue() {    OPT_PhysicalRegisterSet phys = ir.regpool.getPhysicalRegisterSet();    OPT_Register ESP = phys.getESP();     OPT_Register PR = phys.getPR();    OPT_MemoryOperand fpHome =       OPT_MemoryOperand.BD(R(PR),                           VM_Entrypoints.framePointerField.getOffsetAsInt(),                           (byte)WORDSIZE, null, null);    // inst is the instruction immediately after the IR_PROLOGUE    // instruction    OPT_Instruction inst = ir.firstInstructionInCodeOrder().nextInstructionInCodeOrder().nextInstructionInCodeOrder();    OPT_Instruction plg = inst.getPrev();    int frameFixedSize = getFrameFixedSize();    ir.compiledMethod.setFrameFixedSize(frameFixedSize);    // I. Buy a stackframe (including overflow check)    // NOTE: We play a little game here.  If the frame we are buying is    //       very small (less than 256) then we can be sloppy with the     //       stackoverflow check and actually allocate the frame in the guard    //       region.  We'll notice when this frame calls someone and take the    //       stackoverflow in the callee. We can't do this if the frame is too big,     //       because growing the stack in the callee and/or handling a hardware trap     //       in this frame will require most of the guard region to complete.    //       See libvm.C.    if (frameFixedSize >= 256) {      // 1. Insert Stack overflow check.        insertBigFrameStackOverflowCheck(plg);      // 2. Save caller's frame pointer      inst.insertBefore(MIR_UnaryNoRes.create(IA32_PUSH, fpHome));      // 3. Set my frame pointer to current value of stackpointer      inst.insertBefore(MIR_Move.create(IA32_MOV, fpHome.copy(), R(ESP)));      // 4. Store my compiled method id      int cmid = ir.compiledMethod.getId();      inst.insertBefore(MIR_UnaryNoRes.create(IA32_PUSH, IC(cmid)));    } else {      // 1. Save caller's frame pointer      inst.insertBefore(MIR_UnaryNoRes.create(IA32_PUSH, fpHome));      // 2. Set my frame pointer to current value of stackpointer      inst.insertBefore(MIR_Move.create(IA32_MOV, fpHome.copy(), R(ESP)));      // 3. Store my compiled method id      int cmid = ir.compiledMethod.getId();      inst.insertBefore(MIR_UnaryNoRes.create(IA32_PUSH, IC(cmid)));      // 4. Insert Stack overflow check.        insertNormalStackOverflowCheck(plg);    }    // II. Save any used volatile and non-volatile registers    if (ir.compiledMethod.isSaveVolatile())  {      saveVolatiles(inst);      saveFloatingPointState(inst);    }    saveNonVolatiles(inst);    inst.insertBefore(Empty.create(IR_ENDPROLOGUE));  }