@@ -424,16 +424,20 @@ boolean doObject(VirtualFrame frame,
424
424
@ Cached IsBuiltinClassProfile errorProfile ,
425
425
@ Cached PyObjectIsTrueNode isTrueNode ) {
426
426
Object iterator = getIter .execute (frame , object );
427
+ int nbrIter = 0 ;
428
+
427
429
while (true ) {
428
430
try {
429
- LoopNode .reportLoopCount (this , 1 );
430
431
Object next = nextNode .execute (frame , iterator );
432
+ nbrIter ++;
431
433
if (!isTrueNode .execute (frame , next )) {
432
434
return false ;
433
435
}
434
436
} catch (PException e ) {
435
437
e .expectStopIteration (errorProfile );
436
438
break ;
439
+ } finally {
440
+ LoopNode .reportLoopCount (this , nbrIter );
437
441
}
438
442
}
439
443
@@ -477,16 +481,20 @@ boolean doObject(VirtualFrame frame,
477
481
@ Cached IsBuiltinClassProfile errorProfile ,
478
482
@ Cached PyObjectIsTrueNode isTrueNode ) {
479
483
Object iterator = getIter .execute (frame , object );
484
+ int nbrIter = 0 ;
485
+
480
486
while (true ) {
481
487
try {
482
- LoopNode .reportLoopCount (this , 1 );
483
488
Object next = nextNode .execute (frame , iterator );
489
+ nbrIter ++;
484
490
if (isTrueNode .execute (frame , next )) {
485
491
return true ;
486
492
}
487
493
} catch (PException e ) {
488
494
e .expectStopIteration (errorProfile );
489
495
break ;
496
+ } finally {
497
+ LoopNode .reportLoopCount (this , nbrIter );
490
498
}
491
499
}
492
500
0 commit comments