[Python-checkins] [3.6] bpo-31586: Use _count_element fast path for real dicts. (#3776)

Raymond Hettinger webhook-mailer at python.org
Tue Sep 26 23:46:00 EDT 2017


https://github.com/python/cpython/commit/a1c49f6f09150f70f063417c8d67a38e59dde7ed
commit: a1c49f6f09150f70f063417c8d67a38e59dde7ed
branch: 3.6
author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
committer: Raymond Hettinger <rhettinger at users.noreply.github.com>
date: 2017年09月26日T20:45:57-07:00
summary:
[3.6] bpo-31586: Use _count_element fast path for real dicts. (#3776)
(cherry picked from commit 31aca4bf79217e6ec4c1d056d3ad7ed4dd469c78)
files:
M Modules/_collectionsmodule.c
diff --git a/Modules/_collectionsmodule.c b/Modules/_collectionsmodule.c
index e7a24f3f058..af20d6edd91 100644
--- a/Modules/_collectionsmodule.c
+++ b/Modules/_collectionsmodule.c
@@ -2276,7 +2276,9 @@ _count_elements(PyObject *self, PyObject *args)
 dict_setitem = _PyType_LookupId(&PyDict_Type, &PyId___setitem__);
 
 if (mapping_get != NULL && mapping_get == dict_get &&
- mapping_setitem != NULL && mapping_setitem == dict_setitem) {
+ mapping_setitem != NULL && mapping_setitem == dict_setitem &&
+ PyDict_Check(mapping))
+ {
 while (1) {
 /* Fast path advantages:
 1. Eliminate double hashing


More information about the Python-checkins mailing list

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