VM.assert(last.getEnd() <= getDfnBegin(live,bb));
VM._assert(last.getEnd() <= getDfnBegin(live,bb));
    private boolean shouldConcatenate(OPT_LiveIntervalElement live,                                      OPT_BasicBlock bb) {      BasicInterval last = (BasicInterval)last();      // Make sure the new live range starts after the last basic interval      if (VM.VerifyAssertions) {        VM.assert(last.getEnd() <= getDfnBegin(live,bb));      }      int dfnBegin = getDfnBegin(live, bb);      if (live.getBegin() != null) {        if (live.getBegin() == bb.firstRealInstruction()) {          // live starts the basic block.  Now make sure it is contiguous          // with the last interval.          if (last.getEnd() + 1 < dfnBegin) {            return false;          } else {            return true;          }        } else {          // live does not start the basic block.  Merge with last iff          // last and live share an instruction.  This happens when a          // register is def'ed and use'd in the same instruction.          if (last.getEnd() == dfnBegin) {            return true;          } else {            return false;          }        }      } else {        // live.getBegin == null.          // Merge if it is contiguous with the last interval.        int dBegin = getDFN(bb.firstInstruction());        if (last.getEnd() + 1 < dBegin) {          return false;        } else {          return true;        }      }    }    /**     * Assign this compound interval to a free spill location.     *     * @param spillManager governing spill location manager     */    void spill(SpillLocationManager spillManager) {      spillInterval = spillManager.findOrCreateSpillLocation(this);      OPT_RegisterAllocatorState.setSpill(reg,spillInterval.getOffset());      OPT_RegisterAllocatorState.clearOneToOne(reg);      if (verboseDebug) {        System.out.println("Assigned " + reg + " to location " +                           spillInterval.getOffset());      }    }