}
  private void prependYield(OPT_BasicBlock bb, 			    OPT_Operator yp, 			    int bcIndex,			    OPT_InlineSequence position) {     OPT_Instruction insertionPoint = null;    if (bb.isEmpty()) {      insertionPoint = bb.lastInstruction();    } else {      insertionPoint = bb.firstRealInstruction();    }    if (yp == YIELDPOINT_PROLOGUE) {      if (VM.VerifyAssertions) {	VM.assert((insertionPoint != null) && 		  (insertionPoint.getOpcode() == IR_PROLOGUE_opcode));      }      // put it after the prologue      insertionPoint = insertionPoint.nextInstructionInCodeOrder();    } else if (VM.UseEpilogueYieldPoints &&	       yp == YIELDPOINT_EPILOGUE) {      // epilogues go before the return or athrow (at end of block)      insertionPoint = bb.lastRealInstruction();    }        OPT_Instruction s = Empty.create(yp);    insertionPoint.insertBefore(s);    s.position = position;    s.bcIndex = bcIndex;  }}