@@ -3816,10 +3816,9 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, _PyInterpreterFrame *frame, int
3816
3816
}
3817
3817
_PyErr_Clear (tstate );
3818
3818
}
3819
- iterator_exhausted_no_error :
3820
3819
/* iterator ended normally */
3821
- assert (! _PyErr_Occurred ( tstate ) );
3822
- Py_DECREF (POP () );
3820
+ STACK_SHRINK ( 1 );
3821
+ Py_DECREF (iter );
3823
3822
JUMPBY (INLINE_CACHE_ENTRIES_FOR_ITER + oparg );
3824
3823
DISPATCH ();
3825
3824
}
@@ -3845,19 +3844,21 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, _PyInterpreterFrame *frame, int
3845
3844
DEOPT_IF (Py_TYPE (it ) != & PyListIter_Type , FOR_ITER );
3846
3845
STAT_INC (FOR_ITER , hit );
3847
3846
PyListObject * seq = it -> it_seq ;
3848
- if (seq == NULL ) {
3849
- goto iterator_exhausted_no_error ;
3850
- }
3851
- if (it -> it_index < PyList_GET_SIZE (seq )) {
3852
- PyObject * next = PyList_GET_ITEM (seq , it -> it_index ++ );
3853
- Py_INCREF (next );
3854
- PUSH (next );
3855
- JUMPBY (INLINE_CACHE_ENTRIES_FOR_ITER );
3856
- NOTRACE_DISPATCH ();
3847
+ if (seq ) {
3848
+ if (it -> it_index < PyList_GET_SIZE (seq )) {
3849
+ PyObject * next = PyList_GET_ITEM (seq , it -> it_index ++ );
3850
+ Py_INCREF (next );
3851
+ PUSH (next );
3852
+ JUMPBY (INLINE_CACHE_ENTRIES_FOR_ITER );
3853
+ NOTRACE_DISPATCH ();
3854
+ }
3855
+ it -> it_seq = NULL ;
3856
+ Py_DECREF (seq );
3857
3857
}
3858
- it -> it_seq = NULL ;
3859
- Py_DECREF (seq );
3860
- goto iterator_exhausted_no_error ;
3858
+ STACK_SHRINK (1 );
3859
+ Py_DECREF (it );
3860
+ JUMPBY (INLINE_CACHE_ENTRIES_FOR_ITER + oparg );
3861
+ NOTRACE_DISPATCH ();
3861
3862
}
3862
3863
3863
3864
TARGET (FOR_ITER_RANGE ) {
@@ -3868,7 +3869,10 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, _PyInterpreterFrame *frame, int
3868
3869
_Py_CODEUNIT next = next_instr [INLINE_CACHE_ENTRIES_FOR_ITER ];
3869
3870
assert (_PyOpcode_Deopt [_Py_OPCODE (next )] == STORE_FAST );
3870
3871
if (r -> index >= r -> len ) {
3871
- goto iterator_exhausted_no_error ;
3872
+ STACK_SHRINK (1 );
3873
+ Py_DECREF (r );
3874
+ JUMPBY (INLINE_CACHE_ENTRIES_FOR_ITER + oparg );
3875
+ NOTRACE_DISPATCH ();
3872
3876
}
3873
3877
long value = (long )(r -> start +
3874
3878
(unsigned long )(r -> index ++ ) * r -> step );
0 commit comments