anchor.diff:      return true;
     }
   
  +  void visitBodyIgnoreLabels(HLoopBlockInformation info) {
  +    if (info.body.start.isLabeledBlock()) {
  +      HBlockInformation oldInfo = currentBlockInformation;
  +      currentBlockInformation = info.body.start.blockFlow.body;
  +      generateStatements(info.body);
  +      currentBlockInformation = oldInfo;
  +    } else {
  +      generateStatements(info.body);
  +    }
  +  }
  +
     bool visitLoopInfo(HLoopBlockInformation info) {
       HExpressionInformation condition = info.condition;
       bool isConditionExpression = isJSCondition(condition);
  -
  -    void visitBodyIgnoreLabels() {
  -      if (info.body.start.isLabeledBlock()) {
  -        HBlockInformation oldInfo = currentBlockInformation;
  -        currentBlockInformation = info.body.start.blockFlow.body;
  -        generateStatements(info.body);
  -        currentBlockInformation = oldInfo;
  -      } else {
  -        generateStatements(info.body);
  -      }
  -    }
   
       switch (info.kind) {
         // Treate all three "test-first" loops the same way.
  
positive.code:           // subgraph.
            // TODO(lrn): Remove this extra labeling when handling all loops
            // using subgraphs.
            visitBodyIgnoreLabels();
  
            indent--;
          } else {
  
negative.code:             wrapLoopBodyForContinue(info);
              generateStatements(info.updates);
            } else {
              visitBodyIgnoreLabels(info);
            }
            indent--;
          }
  