Skip to content

Commit

Permalink
Add more FOR_ITER specialization stats (GH-32151)
Browse files Browse the repository at this point in the history
  • Loading branch information
sweeneyde authored Jun 13, 2022
1 parent 9331087 commit c5d0517
Showing 1 changed file with 26 additions and 2 deletions.
28 changes: 26 additions & 2 deletions Python/specialize.c
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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;
}

Expand Down

0 comments on commit c5d0517

Please sign in to comment.