VM.assert (dominator.dominates (earlyBlock.getNumber(),
VM._assert (dominator.dominates (earlyBlock.getNumber(),
  OPT_BasicBlock upto (OPT_Instruction earlyPos, OPT_BasicBlock lateBlock,		       OPT_Instruction inst) {        OPT_BasicBlock origBlock = getOrigBlock(inst);    OPT_BasicBlock actBlock = lateBlock;    OPT_BasicBlock bestBlock = lateBlock;    OPT_BasicBlock earlyBlock = getBlock(earlyPos);    if (VM.VerifyAssertions) {      if (!dominator.dominates (earlyBlock.getNumber(), 				origBlock.getNumber())	  || !dominator.dominates (earlyBlock.getNumber(), 				   lateBlock.getNumber())) {	OPT_SSA.printInstructions (ir);	VM.sysWrite ("> "+earlyBlock.getNumber()+", "+origBlock.getNumber()		     + ", "+lateBlock.getNumber()+"\n");	VM.sysWrite (""+inst+"\n");      }      VM.assert (dominator.dominates (earlyBlock.getNumber(), 				      origBlock.getNumber()));      VM.assert (dominator.dominates (earlyBlock.getNumber(), 				      lateBlock.getNumber()));    }    for (;;) {      /* is the actual block better (less frequent) 	 than the so far best block? */      if (frequency (actBlock) < frequency (bestBlock)) {	if (DEBUG) VM.sysWrite ("going from "+frequency (origBlock)+" to "				+frequency (actBlock)+"\n"); 	bestBlock = actBlock;      }      /* all candidates checked? */      if (actBlock == earlyBlock) 	break;            /* walk up the dominator tree for next candidate*/      actBlock = dominator.getParent(actBlock);    }    if (bestBlock == origBlock) return  null;    if (DEBUG) VM.sysWrite ("best Block: "+bestBlock+"\n");    return bestBlock;  }