loop_over_basic_blocks:
  private void perform() throws OPT_OptimizingCompilerException {        // Check we have a loop    if (loop == null) {      return;    }    // Process the header first as it's the most likely source of non-regularity    try {      processHeader();      // Get the basic blocks that constitute the loop      OPT_BasicBlockEnumeration loopBlocks = getBasicBlocks();      // Loop over all blocks within this loop and calculate iterator.. information      loop_over_basic_blocks:      while(loopBlocks.hasMoreElements()) {        // The current basic block        OPT_BasicBlock curLoopBB = loopBlocks.next();                // Is this block the loop header?        if(curLoopBB == header){          // The header was already processed        }        else {          processLoopBlock(curLoopBB);        }      }    }    catch (NonRegularLoopException e) {      if (DEBUG){        VM.sysWrite(e.summary()+"\n");      }      // Make sure this loop looks non-regular      initialIteratorValue = null;    }    if (DEBUG && (isNonRegularLoop() == false)) {      dump();    }  }