A(FP), IC(spilledArgumentCounter << LOG_BYTES_IN_ADDRESS)));
A(FP), IC((spilledArgumentCounter << LOG_BYTES_IN_ADDRESS) + BYTES_IN_ADDRESS - BYTES_IN_INT )));
  private static void prologueExpand(OPT_IR ir) {        // set up register lists for dead code elimination.    boolean useDU = ir.options.getOptLevel() >= 1;    if (useDU) {      OPT_DefUse.computeDU(ir);    }    OPT_Instruction prologueInstr =       ir.firstInstructionInCodeOrder().nextInstructionInCodeOrder();    if (VM.VerifyAssertions) VM._assert(prologueInstr.operator == IR_PROLOGUE);    OPT_Instruction start = prologueInstr.nextInstructionInCodeOrder();    int int_index = 0;    int double_index = 0;    int spilledArgumentCounter =       (-256 - VM_Constants.STACKFRAME_HEADER_SIZE) >> LOG_BYTES_IN_ADDRESS;    OPT_PhysicalRegisterSet phys = ir.regpool.getPhysicalRegisterSet();    OPT_Register FP = phys.getFP();    for (OPT_OperandEnumeration symParams = prologueInstr.getDefs();         symParams.hasMoreElements(); ) {      OPT_RegisterOperand symParamOp = (OPT_RegisterOperand)symParams.next();      OPT_Register symParam = symParamOp.register;      VM_TypeReference t = symParamOp.type;      if (t.isFloatType()) {        // if optimizing, skip dead parameters        // SJF: This optimization current breaks the paranoid sanity test.        // Why? TODO: figure this out and remove the 'true' case below        if (true || !useDU || symParam.useList != null) {          if (double_index < NUMBER_DOUBLE_PARAM) {            OPT_Register param = phys.get(FIRST_DOUBLE_PARAM + (double_index));            start.insertBack(MIR_Move.create(PPC_FMR, F(symParam), F(param)));          } else {                  // spilled parameter            start.insertBack(MIR_Load.create(PPC_LFS, F(symParam),                                              A(FP),                                              IC(spilledArgumentCounter << LOG_BYTES_IN_ADDRESS)));            spilledArgumentCounter--;          }        }        double_index++;      } else if (t.isDoubleType()) {        // if optimizing, skip dead parameters        // SJF: This optimization current breaks the paranoid sanity test.        // Why? TODO: figure this out and remove the 'true' case below        if (true || !useDU || symParam.useList != null) {          if (double_index < NUMBER_DOUBLE_PARAM) {            OPT_Register param = phys.get(FIRST_DOUBLE_PARAM + (double_index));            start.insertBack(MIR_Move.create(PPC_FMR, D(symParam), D(param)));          } else {                  // spilled parameter            start.insertBack(MIR_Load.create(PPC_LFD, D(symParam),                                              A(FP),                                              IC(spilledArgumentCounter << LOG_BYTES_IN_ADDRESS)));            spilledArgumentCounter -= BYTES_IN_DOUBLE/BYTES_IN_ADDRESS;          }        }        double_index++;      } else { // t is object, 1/2 of a long, int, short, char, byte, or boolean        // if optimizing, skip dead parameters        // SJF: This optimization current breaks the paranoid sanity test.        // Why? TODO: figure this out and remove the 'true' case below        if (true || !useDU || symParam.useList != null) {          if (int_index < NUMBER_INT_PARAM) {            OPT_Register param = phys.get(FIRST_INT_PARAM + (int_index));            start.insertBack(MIR_Move.create(PPC_MOVE,                                              new OPT_RegisterOperand                                             (symParam, t),                                             A(param)));          } else {                  // spilled parameter            //-#if RVM_FOR_64_ADDR            if (t.isIntType() || t.isShortType() || t.isByteType() || t.isCharType() || t.isBooleanType())              start.insertBack(MIR_Load.create(PPC_LInt, new OPT_RegisterOperand(symParam, t),                                A(FP), IC(spilledArgumentCounter << LOG_BYTES_IN_ADDRESS)));            else //a reference or numeric long            //-#endif              start.insertBack(MIR_Load.create(PPC_LAddr, new OPT_RegisterOperand(symParam, t),                                A(FP), IC(spilledArgumentCounter << LOG_BYTES_IN_ADDRESS)));            spilledArgumentCounter--;          }        }        int_index++;      }    }    // Now that we've made the calling convention explicit in the prologue,    // set IR_PROLOGUE to have no defs.    prologueInstr.replace(Prologue.create(IR_PROLOGUE, 0));  }