[Python-checkins] Add more FOR_ITER specialization stats (GH-32151)

sweeneyde webhook-mailer at python.org
Mon Jun 13 01:41:03 EDT 2022


https://github.com/python/cpython/commit/c5d0517ea4c32c33b88a7548769747a494133a76
commit: c5d0517ea4c32c33b88a7548769747a494133a76
branch: main
author: Dennis Sweeney <36520290+sweeneyde at users.noreply.github.com>
committer: sweeneyde <36520290+sweeneyde at users.noreply.github.com>
date: 2022年06月13日T01:40:54-04:00
summary:
Add more FOR_ITER specialization stats (GH-32151)
files:
M Python/specialize.c
diff --git a/Python/specialize.c b/Python/specialize.c
index 1df281a19a41e..b1877841cdf73 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;
 }
 


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /