public final OPT_BasicBlock createSubBlock(int bc, OPT_IR ir, float wf) {      OPT_BasicBlock temp = new OPT_BasicBlock(bc, firstInstruction().position, ir.cfg);    temp.exceptionHandlers = exceptionHandlers; temp.setCanThrowExceptions(canThrowExceptions()); temp.setMayThrowUncaughtException(mayThrowUncaughtException()); temp.setUnsafeToSchedule(isUnsafeToSchedule()); temp.setExecutionFrequency(getExecutionFrequency() * wf); for (OPT_BasicBlockEnumeration e = getOut(); e.hasMoreElements(); ) { OPT_BasicBlock out = e.next(); if (out.isExceptionHandlerBasicBlock()) { temp.insertOut(out); } }  return temp;
public final OPT_BasicBlock createSubBlock(int bc, OPT_IR ir) { return createSubBlock(bc, ir, 1f);
  public final OPT_BasicBlock createSubBlock(int bc, OPT_IR ir, float wf) {    // For now, give the basic block the same inline context as the    // original block.      // TODO: This won't always work. (In fact, in the presence of inlining    //       it will be wrong quite often). --dave    //       We really have to pass the position in if we except this to work.    OPT_BasicBlock temp =       new OPT_BasicBlock(bc, firstInstruction().position, ir.cfg);    // Conservatively transfer all exception handling behavior of the     // parent block  (this) to the new child block (temp)    temp.exceptionHandlers = exceptionHandlers;    temp.setCanThrowExceptions(canThrowExceptions());    temp.setMayThrowUncaughtException(mayThrowUncaughtException());    temp.setUnsafeToSchedule(isUnsafeToSchedule());    temp.setExecutionFrequency(getExecutionFrequency() * wf);    for (OPT_BasicBlockEnumeration e = getOut(); e.hasMoreElements(); ) {      OPT_BasicBlock out = e.next();      if (out.isExceptionHandlerBasicBlock()) {        temp.insertOut(out);      }    }    return temp;  }