final void pruneExceptionalOut(IR ir){
  int n=getNumberOfExceptionalOut();
  if (n > 0) {
    ComputedBBEnum handlers=new ComputedBBEnum(n);
    Enumeration<Instruction> e=forwardRealInstrEnumerator();
    while (e.hasMoreElements()) {
      Instruction x=e.nextElement();
      Enumeration<BasicBlock> bbs=getApplicableExceptionalOut(x);
      while (bbs.hasMoreElements()) {
        BasicBlock bb=bbs.nextElement();
        handlers.addPossiblyDuplicateElement(bb);
      }
    }
    deleteExceptionalOut();
    for (int i=0; handlers.hasMoreElements(); i++) {
      ExceptionHandlerBasicBlock b=(ExceptionHandlerBasicBlock)handlers.nextElement();
      insertOut(b);
    }
  }
  recomputeNormalOut(ir);
}

final void pruneExceptionalOut ( IR ir ) { int n = getNumberOfExceptionalOut ( ) ; if ( n > 0 ) { ComputedBBEnum handlers = new ComputedBBEnum ( n ) ; Enumeration < Instruction > e = forwardRealInstrEnumerator ( ) ; while ( e . hasMoreElements ( ) ) { Instruction x = e . nextElement ( ) ; Enumeration < BasicBlock > bbs = getApplicableExceptionalOut ( x ) ; while ( bbs . hasMoreElements ( ) ) { BasicBlock bb = bbs . nextElement ( ) ; handlers . addPossiblyDuplicateElement ( bb ) ; } } deleteExceptionalOut ( ) ; for ( int i = 0 ; handlers . hasMoreElements ( ) ; i ++ ) { ExceptionHandlerBasicBlock b = ( ExceptionHandlerBasicBlock ) handlers . nextElement ( ) ; insertOut ( b ) ; } } recomputeNormalOut ( ir ) ; }
prune away exceptional out edges that are not reachable given this block ' s instructions .
