private static final String registerName[] = new String[getSize()]; static { String regName[] = registerName; for (int i = 0; i < NUM_GPRS; i++) regName[i + FIRST_INT] = "R" + i; for (int i = 0; i < NUM_FPRS; i++) regName[i + FIRST_DOUBLE] = "F" + i; for (int i = 0; i < NUM_CRS; i++) regName[i + FIRST_CONDITION] = "C" + i; regName[JTOC_POINTER] = "JTOC"; regName[FRAME_POINTER] = "FP"; regName[THREAD_ID_REGISTER] = "TI"; regName[PROCESSOR_REGISTER] = "PR"; regName[XER] = "XER"; regName[LR] = "LR"; regName[CTR] = "CTR"; regName[TU] = "TU"; regName[TL] = "TL"; regName[CR] = "CR"; }
  final byte getSPR(OPT_Register r) {    if (VM.VerifyAssertions) {      VM.assert ( (r == getXER()) || (r == getLR()) || (r == getCTR()) );     }     if (r == getXER()) {      return 1;    } else if (r == getLR()) {      return 8;    } else if (r == getCTR()) {      return 9;    } else {      throw new OPT_OptimizingCompilerException("Invalid SPR");    }  };  /**   * register names for each class. used in printing the IR   * The indices for "FP" and "JTOC" should always match the   * final static values of int FP and int JTOC defined below.   */  private static final String registerName[] = new String[getSize()];  static {    String regName[] = registerName;    for (int i = 0; i < NUM_GPRS; i++)      regName[i + FIRST_INT] = "R" + i;    for (int i = 0; i < NUM_FPRS; i++)      regName[i + FIRST_DOUBLE] = "F" + i;    for (int i = 0; i < NUM_CRS; i++)      regName[i + FIRST_CONDITION] = "C" + i;    regName[JTOC_POINTER] = "JTOC";    regName[FRAME_POINTER] = "FP";    regName[THREAD_ID_REGISTER] = "TI";    regName[PROCESSOR_REGISTER] = "PR";    regName[XER] = "XER";    regName[LR] = "LR";    regName[CTR] = "CTR";    regName[TU] = "TU";    regName[TL] = "TL";    regName[CR] = "CR";  }