if (VM.VerifyAssertions) VM.assert(false);
if (VM.VerifyAssertions) VM._assert(false);
  private void unSSAGuardsInit(OPT_IR ir) {    guardPhis = null;    OPT_InstructionEnumeration e = ir.forwardInstrEnumerator();    // visit all instructions, looking for guard phis    while (e.hasMoreElements()) {      OPT_Instruction inst = e.next();      if (! Phi.conforms (inst)) continue;      OPT_Operand res = Phi.getResult(inst);      if (! (res instanceof OPT_RegisterOperand)) continue;      OPT_Register r = res.asRegister().register;      if (!r.isValidation()) continue;      // force all operands of Phis into registers.      inst.scratchObject = guardPhis;      guardPhis = inst;      int values = Phi.getNumberOfValues (inst);      for (int i = 0;  i < values;  ++i) {        OPT_Operand op = Phi.getValue (inst, i);        if (!(op instanceof OPT_RegisterOperand)) {          if (op instanceof OPT_TrueGuardOperand) {            OPT_BasicBlock bb = Phi.getPred(inst,i).block;            OPT_Instruction move = Move.create (GUARD_MOVE,                                                res.asRegister().copyD2D(),                                                new OPT_TrueGuardOperand());            move.position = ir.gc.inlineSequence;            move.bcIndex = SSA_SYNTH_BCI;            bb.appendInstructionRespectingTerminalBranchOrPEI(move);           } else if (op instanceof OPT_UnreachableOperand) {            // do nothing          } else {            if (VM.VerifyAssertions) VM.assert(false);          }        }      }    }    // visit all guard registers, init union/find    for (OPT_Register r=ir.regpool.getFirstRegister(); r != null; r = r.next) {      if (!r.isValidation()) continue;      r.scratch = 1;      r.scratchObject = r;    }  }  /**   * Determine target register for guard phi operands   */  private void unSSAGuardsDetermineReg(OPT_IR ir) {    OPT_Instruction inst = guardPhis;    while (inst != null) {      OPT_Register r = Phi.getResult(inst).asRegister().register;      int values = Phi.getNumberOfValues(inst);      for (int i = 0;  i < values; ++i) {        OPT_Operand op = Phi.getValue(inst, i);        if (op instanceof OPT_RegisterOperand) {          guardUnion(op.asRegister().register, r);        } else {          if (VM.VerifyAssertions) {            VM.assert(op instanceof OPT_TrueGuardOperand ||                      op instanceof OPT_UnreachableOperand);          }        }      }      inst = (OPT_Instruction)inst.scratchObject;    }  }  /**   * Rename registers and delete Phis.   */  private void unSSAGuardsFinalize(OPT_IR ir) {    OPT_DefUse.computeDU(ir);    for (OPT_Register r=ir.regpool.getFirstRegister(); r != null; r = r.next) {      if (!r.isValidation()) continue;      OPT_Register nreg = guardFind(r);      OPT_RegisterOperandEnumeration uses = OPT_DefUse.uses(r);      while (uses.hasMoreElements()) {        OPT_RegisterOperand use = uses.next();        use.register = nreg;      }      OPT_RegisterOperandEnumeration defs = OPT_DefUse.defs(r);      while (defs.hasMoreElements()) {        OPT_RegisterOperand def = defs.next();        def.register = nreg;      }    }    OPT_Instruction inst = guardPhis;    while (inst != null) {      inst.remove();      inst = (OPT_Instruction) inst.scratchObject;    }  }