OPT_Instruction earlyPos;
OPT_Instruction _earlyPos;
  private OPT_Instruction scheduleEarly(OPT_Instruction inst)  {    OPT_Instruction earlyPos;    if (getState(inst) >= early) return getEarlyPos (inst);        setState (inst, early);    setEarlyPos (inst, inst);        // already on outer level?    //if (ir.HIRInfo.LoopStructureTree.getLoopNestDepth(getBlock(inst)) == 0)    //  return inst;    if (ir.options.FREQ_FOCUS_EFFORT && getOrigBlock (inst).getInfrequent())      return inst;        // explicitly INCLUDE instructions    if (!shouldMove(inst, ir)) {      return inst;    }    // dependencies via scalar operands    earlyPos = scheduleScalarDefsEarly(inst.getUses(),                                       ir.firstInstructionInCodeOrder(), inst);    if (VM.VerifyAssertions) VM._assert (earlyPos != null);        // memory dependencies    if (ir.IRStage == ir.HIR) {      earlyPos = scheduleHeapDefsEarly(ssad.getHeapUses(inst), earlyPos, inst);      if (VM.VerifyAssertions) VM._assert (earlyPos != null);    }    /* don't put memory stores or PEIs on speculative path */    if ((inst.isPEI() && !ir.options.LICM_IGNORE_PEI)        || inst.isImplicitStore())      while (!postDominates (getBlock (inst), getBlock (earlyPos)))        earlyPos = dominanceSuccessor (earlyPos, inst);    setEarlyPos (inst, earlyPos);    if (DEBUG && getBlock (earlyPos) != getBlock (inst)) {      VM.sysWrite ("new earlyBlock: "+ getBlock (earlyPos) +" for "                   + getBlock (inst)+": "+inst+"\n");    }        setBlock (inst, getBlock (earlyPos));    return earlyPos;      }