VM.assert(!isBbFirst(), "Cannot insert before first instruction of block");
VM._assert(!isBbFirst(), "Cannot insert before first instruction of block");
  public void insertBefore(OPT_Instruction newInstr) {    if (OPT_IR.PARANOID) {      isBackwardLinked();      newInstr.isNotLinked();      VM.assert(!isBbFirst(), "Cannot insert before first instruction of block");    }    // set position unless someone else has    if (newInstr.position == null) {	newInstr.position = position;	newInstr.bcIndex = bcIndex;    }    // Splice newInstr into the doubly linked list of instructions    OPT_Instruction old_prev = prev;    prev = newInstr;    newInstr.next = this;    newInstr.prev = old_prev;    old_prev.next = newInstr;  }  /**   * Replacement: Replace this with newInstr.   * We could allow replacement of first & last instrs in the basic block,   * but it would be a fair amount of work to update everything, and probably   * isn't useful, so we'll simply disallow it for now.   *   * @param newInstr  the replacement instruction must not be in an    *                  instruction list already and must not be a    *                  LABEL or BBEND instruction.   */  public void replace(OPT_Instruction newInstr) {    if (OPT_IR.PARANOID) {      isLinked();      newInstr.isNotLinked();      VM.assert(isBbInside(), "Can only replace BbInside instructions");    }    OPT_Instruction old_prev = prev;    OPT_Instruction old_next = next;    // Splice newInstr into the doubly linked list of instructions    newInstr.prev = old_prev;    old_prev.next = newInstr;    newInstr.next = old_next;    old_next.prev = newInstr;    next = null; prev = null;  }