Skip to content

Commit 0d04b8d

Browse files
authored
GH-91432: Remove the iterator_exhausted_no_error label (GH-96517)
1 parent 56d9cf7 commit 0d04b8d

File tree

1 file changed

+20
-16
lines changed

1 file changed

+20
-16
lines changed

Python/ceval.c

+20-16
Original file line numberDiff line numberDiff line change
@@ -3816,10 +3816,9 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, _PyInterpreterFrame *frame, int
38163816
}
38173817
_PyErr_Clear(tstate);
38183818
}
3819-
iterator_exhausted_no_error:
38203819
/* iterator ended normally */
3821-
assert(!_PyErr_Occurred(tstate));
3822-
Py_DECREF(POP());
3820+
STACK_SHRINK(1);
3821+
Py_DECREF(iter);
38233822
JUMPBY(INLINE_CACHE_ENTRIES_FOR_ITER + oparg);
38243823
DISPATCH();
38253824
}
@@ -3845,19 +3844,21 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, _PyInterpreterFrame *frame, int
38453844
DEOPT_IF(Py_TYPE(it) != &PyListIter_Type, FOR_ITER);
38463845
STAT_INC(FOR_ITER, hit);
38473846
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);
38573857
}
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();
38613862
}
38623863

38633864
TARGET(FOR_ITER_RANGE) {
@@ -3868,7 +3869,10 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, _PyInterpreterFrame *frame, int
38683869
_Py_CODEUNIT next = next_instr[INLINE_CACHE_ENTRIES_FOR_ITER];
38693870
assert(_PyOpcode_Deopt[_Py_OPCODE(next)] == STORE_FAST);
38703871
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();
38723876
}
38733877
long value = (long)(r->start +
38743878
(unsigned long)(r->index++) * r->step);

0 commit comments

Comments
 (0)