diff options
author | Dennis Sweeney <36520290+sweeneyde@users.noreply.github.com> | 2022-06-13 05:40:54 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-06-13 05:40:54 (GMT) |
commit | c5d0517ea4c32c33b88a7548769747a494133a76 (patch) | |
tree | 9bd76dbbba4d1e88ba0eaa0d541aa6f5d5761a2a /Python | |
parent | 93310879665368445f95df2f3d9be7fb82435248 (diff) | |
download | cpython-c5d0517ea4c32c33b88a7548769747a494133a76.zip cpython-c5d0517ea4c32c33b88a7548769747a494133a76.tar.gz cpython-c5d0517ea4c32c33b88a7548769747a494133a76.tar.bz2 |
Add more FOR_ITER specialization stats (GH-32151)
Diffstat (limited to 'Python')
-rw-r--r-- | Python/specialize.c | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/Python/specialize.c b/Python/specialize.c index 1df281a1..b187784 100644 --- a/Python/specialize.c +++ b/Python/specialize.c @@ -477,6 +477,12 @@ miss_counter_start(void) { #define SPEC_FAIL_FOR_ITER_DICT_ITEMS 21 #define SPEC_FAIL_FOR_ITER_DICT_VALUES 22 #define SPEC_FAIL_FOR_ITER_ENUMERATE 23 +#define SPEC_FAIL_FOR_ITER_MAP 24 +#define SPEC_FAIL_FOR_ITER_ZIP 25 +#define SPEC_FAIL_FOR_ITER_SEQ_ITER 26 +#define SPEC_FAIL_FOR_ITER_REVERSED_LIST 27 +#define SPEC_FAIL_FOR_ITER_CALLABLE 28 +#define SPEC_FAIL_FOR_ITER_ASCII_STRING 29 // UNPACK_SEQUENCE @@ -2051,10 +2057,28 @@ int if (t == &PyEnum_Type) { return SPEC_FAIL_FOR_ITER_ENUMERATE; } - - if (strncmp(t->tp_name, "itertools", 8) == 0) { + if (t == &PyMap_Type) { + return SPEC_FAIL_FOR_ITER_MAP; + } + if (t == &PyZip_Type) { + return SPEC_FAIL_FOR_ITER_ZIP; + } + if (t == &PySeqIter_Type) { + return SPEC_FAIL_FOR_ITER_SEQ_ITER; + } + if (t == &PyListRevIter_Type) { + return SPEC_FAIL_FOR_ITER_REVERSED_LIST; + } + if (t == &_PyUnicodeASCIIIter_Type) { + return SPEC_FAIL_FOR_ITER_ASCII_STRING; + } + const char *name = t->tp_name; + if (strncmp(name, "itertools", 9) == 0) { return SPEC_FAIL_FOR_ITER_ITERTOOLS; } + if (strncmp(name, "callable_iterator", 17) == 0) { + return SPEC_FAIL_FOR_ITER_CALLABLE; + } return SPEC_FAIL_OTHER; } |