int cur_idx = elm_idx;
  private void collectOsrInfo(OPT_Instruction inst, OPT_LiveSet lives) {    // create an entry to the OSRIRMap, order: callee => caller    LinkedList mvarList = new LinkedList();     // get the type info for locals and stacks    OPT_InlinedOsrTypeInfoOperand typeInfo =      OsrPoint.getInlinedTypeInfo(inst);     /* iterator over type info and create LocalRegTuple     * for each variable.     * NOTE: we do not process LONG type register operand here,     * which was splitted in BURS.     */    byte[][] ltypes = typeInfo.localTypeCodes;    byte[][] stypes = typeInfo.stackTypeCodes;    int nummeth = typeInfo.methodids.length;    int elm_idx = 0;     int snd_long_idx = typeInfo.validOps;    for (int midx = 0; midx < nummeth; midx++) {      LinkedList tupleList = new LinkedList();      byte[] ls = ltypes[midx];      byte[] ss = stypes[midx];      /* record maps for local variables, skip dead ones */      for (int i=0, n=ls.length; i<n; i++) {        if (ls[i] != VoidTypeCode) {          // check liveness          int cur_idx = elm_idx;          OPT_Operand op = OsrPoint.getElement(inst, elm_idx++);          OSR_LocalRegPair tuple =            new OSR_LocalRegPair(OSR_Constants.LOCAL, i, ls[i], op);          // put it in the list          tupleList.add(tuple);          // get another half of a long type operand          if (VM.BuildFor32Addr && (ls[i] == LongTypeCode)) {            OPT_Operand other_op = OsrPoint.getElement(inst, snd_long_idx++);            tuple._otherHalf =               new OSR_LocalRegPair(OSR_Constants.LOCAL, i, ls[i], other_op);          }        }      }       /* record maps for stack slots */      for (int i=0, n=ss.length; i<n; i++) {        if (ss[i] != VoidTypeCode) {          OSR_LocalRegPair tuple =            new OSR_LocalRegPair(OSR_Constants.STACK,                                    i,                                    ss[i],                                    OsrPoint.getElement(inst, elm_idx++));           tupleList.add(tuple);          if (VM.BuildFor32Addr && (ss[i] == LongTypeCode)) {            tuple._otherHalf =               new OSR_LocalRegPair(OSR_Constants.STACK,                                      i,                                      ss[i],                              OsrPoint.getElement(inst, snd_long_idx++));          }        }      }      // create OSR_MethodVariables          OSR_MethodVariables mvar =        new OSR_MethodVariables(typeInfo.methodids[midx],                                   typeInfo.bcindexes[midx],                                   tupleList);      mvarList.add(mvar);    }    // put the method variables for this OSR in the osrMap, encoding later.    osrMap.insertFirst(inst, mvarList);  }