summaryrefslogtreecommitdiffstats
path: root/Python/ceval.c
diff options
context:
space:
mode:
authorMark Shannon <mark@hotpy.org>2022-02-02 15:56:47 (GMT)
committerGitHub <noreply@github.com>2022-02-02 15:56:47 (GMT)
commit0d05da1fbf39f32d2c22a1f3702f40f916997b60 (patch)
tree832794ca2c6f84e807f82289a7fa45487493ccd7 /Python/ceval.c
parentf66c857572a308822c70fd25e0197b6e0dec6e34 (diff)
downloadcpython-0d05da1fbf39f32d2c22a1f3702f40f916997b60.zip
cpython-0d05da1fbf39f32d2c22a1f3702f40f916997b60.tar.gz
cpython-0d05da1fbf39f32d2c22a1f3702f40f916997b60.tar.bz2
Add specialization stats for FOR_ITER. (GH-31079)
Diffstat (limited to 'Python/ceval.c')
-rw-r--r--Python/ceval.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/Python/ceval.c b/Python/ceval.c
index 70748e8..3c52c58 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -4212,6 +4212,11 @@ handle_eval_breaker:
PREDICTED(FOR_ITER);
/* before: [iter]; after: [iter, iter()] *or* [] */
PyObject *iter = TOP();
+#ifdef Py_STATS
+ extern int _PySpecialization_ClassifyIterator(PyObject *);
+ _py_stats.opcode_stats[FOR_ITER].specialization.failure++;
+ _py_stats.opcode_stats[FOR_ITER].specialization.failure_kinds[_PySpecialization_ClassifyIterator(iter)]++;
+#endif
PyObject *next = (*Py_TYPE(iter)->tp_iternext)(iter);
if (next != NULL) {
PUSH(next);