summaryrefslogtreecommitdiff
path: root/Python/generated_cases.c.h
diff options
context:
space:
mode:
Diffstat (limited to 'Python/generated_cases.c.h')
-rw-r--r--Python/generated_cases.c.h23
1 files changed, 23 insertions, 0 deletions
diff --git a/Python/generated_cases.c.h b/Python/generated_cases.c.h
index 76eb6085ec..59e70b7222 100644
--- a/Python/generated_cases.c.h
+++ b/Python/generated_cases.c.h
@@ -2759,6 +2759,29 @@
DISPATCH();
}
+ TARGET(FOR_ITER_TUPLE) {
+ assert(cframe.use_tracing == 0);
+ _PyTupleIterObject *it = (_PyTupleIterObject *)TOP();
+ DEOPT_IF(Py_TYPE(it) != &PyTupleIter_Type, FOR_ITER);
+ STAT_INC(FOR_ITER, hit);
+ PyTupleObject *seq = it->it_seq;
+ if (seq) {
+ if (it->it_index < PyTuple_GET_SIZE(seq)) {
+ PyObject *next = PyTuple_GET_ITEM(seq, it->it_index++);
+ PUSH(Py_NewRef(next));
+ JUMPBY(INLINE_CACHE_ENTRIES_FOR_ITER);
+ goto end_for_iter_tuple; // End of this instruction
+ }
+ it->it_seq = NULL;
+ Py_DECREF(seq);
+ }
+ STACK_SHRINK(1);
+ Py_DECREF(it);
+ JUMPBY(INLINE_CACHE_ENTRIES_FOR_ITER + oparg + 1);
+ end_for_iter_tuple:
+ DISPATCH();
+ }
+
TARGET(FOR_ITER_RANGE) {
assert(cframe.use_tracing == 0);
_PyRangeIterObject *r = (_PyRangeIterObject *)TOP();