VM.sysWrite("m(" + (ir.IRStage == ir.LIR ? "l" : "h") + ") " +
VM.sysWrite("m(" + (ir.IRStage == OPT_IR.LIR ? "l" : "h") + ") " +
  void move(OPT_Instruction inst, OPT_BasicBlock to) {    OPT_BasicBlock origBlock = getOrigBlock (inst);    OPT_Instruction cand = null;        /* find a position within bestBlock */    if (dominator.dominates (origBlock.getNumber(), to.getNumber())) {      // moved down, so insert in from      OPT_Instruction last = null;      OPT_InstructionEnumeration e = to.forwardInstrEnumerator();      while (e.hasMoreElements()) {        cand = e.next();        if (DEBUG) VM.sysWrite(cand.toString() + "\n");        if ((  !Label.conforms (cand)) // skip labels, phis, and yieldpoints            && !cand.isYieldPoint()            && !Phi.conforms(cand)) break;         last = cand;      }      cand = last;    } else {      // moved up, so insert at end of block      OPT_InstructionEnumeration e = to.reverseInstrEnumerator();      while (e.hasMoreElements()) {        cand = e.next();        if (DEBUG) VM.sysWrite(cand.toString() + "\n");        if ((  !BBend.conforms(cand))            && !cand.isBranch() // skip branches and newly placed insts            && !relocated.contains (cand)) break;       }      if (DEBUG) VM.sysWrite ("Adding to relocated: "+inst+"\n");      relocated.add (inst);    }        if (DEBUG && moved.add(inst.operator))      VM.sysWrite("m(" + (ir.IRStage == ir.LIR ? "l" : "h") + ") " +                   inst.operator + "\n");    if (verbose) {      VM.sysWrite(ir.IRStage == ir.LIR ? "%" : "#");      VM.sysWrite(" moving " + inst + " from " + origBlock +                   " to " + to + "\n" + "behind  " + cand + "\n");          }    inst.remove();    cand.insertAfter(inst);  }