VM.assert(value.isRegister()); VM.assert(MIR_Move.getValue(end).asRegister().register
VM._assert(value.isRegister()); VM._assert(MIR_Move.getValue(end).asRegister().register
    private CompoundInterval processLiveInterval(OPT_LiveIntervalElement live,                                                  OPT_BasicBlock bb) {      // get the reg and (adjusted) begin, end pair for this interval      OPT_Register reg = live.getRegister();      int dfnend = getDfnEnd(live, bb);      int dfnbegin = getDfnBegin(live, bb);      //-#if RVM_FOR_IA32      // mutate FMOVs that end live ranges      if (MUTATE_FMOV) {        if (reg.isFloatingPoint()) {          OPT_Instruction end = live.getEnd();          if (end != null && end.operator == IA32_FMOV) {            if (dfnend == dfnbegin) {              // if end, an FMOV, both begins and ends the live range,              // then end is dead.  Change it to a NOP and return null.               Empty.mutate(end,NOP);              return null;            } else {              if (!end.isPEI()) {                if (VM.VerifyAssertions) {		                        OPT_Operand value = MIR_Move.getValue(end);                  VM.assert(value.isRegister());                  VM.assert(MIR_Move.getValue(end).asRegister().register                             == reg);                }                end.operator = IA32_FMOV_ENDING_LIVE_RANGE;              }            }          }        }      }      //-#endif  RVM_FOR_IA32      // check for an existing live interval for this register      CompoundInterval existingInterval = getInterval(reg);      if (existingInterval == null) {        // create a new live interval        CompoundInterval newInterval = new CompoundInterval(dfnbegin,                                                            dfnend,reg);        if (verboseDebug) System.out.println("created a new interval " + newInterval);        // associate the interval with the register         setInterval(reg, newInterval);        // add the new interval to the sorted set of intervals.          BasicInterval b = (BasicInterval)newInterval.first();        ir.MIRInfo.linearScanState.intervals.add(b);        return newInterval;      } else {        // add the new live range to the existing interval        ArrayList intervals = ir.MIRInfo.linearScanState.intervals;        BasicInterval added = existingInterval.addRange(live,bb);        if (added != null) {           intervals.add(added);        }        if (verboseDebug) System.out.println("Extended old interval " + reg);         if (verboseDebug) System.out.println(existingInterval);        return existingInterval;      }     }