if (nGPRParams > phys.getNumberOfGPRParams()) {
if (nGPRParams > OPT_PhysicalRegisterSet.getNumberOfGPRParams()) {
  private static int expandParametersToCall(OPT_Instruction call, OPT_IR ir) {    int nGPRParams = 0;    int nFPRParams = 0;    OPT_PhysicalRegisterSet phys = ir.regpool.getPhysicalRegisterSet();    // count the number FPR parameters in a pre-pass    int FPRRegisterParams= countFPRParams(call);    FPRRegisterParams = Math.min(FPRRegisterParams,                                  phys.getNumberOfFPRParams());    // offset, in bytes, from the SP, for the next parameter slot on the    // stack    int parameterBytes = 0;    OPT_Register ESP = phys.getESP();    // Require ESP to be at bottom of frame before a call,    call.insertBefore(MIR_UnaryNoRes.create(REQUIRE_ESP, IC(0)));    // walk over each parameter    // must count then before we start nulling them out!    int numParams = MIR_Call.getNumberOfParams(call);     int nParamsInRegisters = 0;    for (int i = 0; i < numParams;  i++) {      OPT_Operand param = MIR_Call.getClearParam(call,i);      MIR_Call.setParam(call,i,null);      VM_TypeReference paramType = param.getType();      if (paramType.isFloatType() || paramType.isDoubleType()) {        nFPRParams++;        int size = paramType.isFloatType() ? 4 : 8;        parameterBytes -= size;        if (nFPRParams > phys.getNumberOfFPRParams()) {          // pass the FP parameter on the stack          OPT_Operand M =            new OPT_StackLocationOperand(false, parameterBytes, size);          call.insertBefore(MIR_Move.create(IA32_FMOV, M, param));        } else {          // Pass the parameter in a register.          // Note that if k FPRs are passed in registers,           // the 1st goes in F(k-1),          // the 2nd goes in F(k-2), etc...          OPT_Register phy =             phys.getFPRParam(FPRRegisterParams - nFPRParams);          OPT_RegisterOperand real = new OPT_RegisterOperand(phy, paramType);          call.insertBefore(MIR_Move.create(IA32_FMOV, real, param));          // Record that the call now has a use of the real register.          MIR_Call.setParam(call,nParamsInRegisters++,real.copy());        }      } else {        nGPRParams++;        parameterBytes -= 4;        if (nGPRParams > phys.getNumberOfGPRParams()) {          // Too many parameters to pass in registers.  Write the          // parameter into the appropriate stack frame location.          call.insertBefore(MIR_UnaryNoRes.create(REQUIRE_ESP, IC(parameterBytes + 4)));          call.insertBefore(MIR_UnaryNoRes.create(IA32_PUSH, param));        } else {          // Pass the parameter in a register.          OPT_Register phy = phys.getGPRParam(nGPRParams-1);          OPT_RegisterOperand real = new OPT_RegisterOperand(phy, paramType);          call.insertBefore(MIR_Move.create(IA32_MOV, real, param));          // Record that the call now has a use of the real register.          MIR_Call.setParam(call,nParamsInRegisters++,real.copy());               }      }    }    return parameterBytes;  }