From: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> Date: Wed, 27 Sep 2017 03:45:57 +0000 (-0700) Subject: [3.6] bpo-31586: Use _count_element fast path for real dicts. (#3776) X-Git-Tag: v3.6.4rc1~218 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a1c49f6f09150f70f063417c8d67a38e59dde7ed;p=python [3.6] bpo-31586: Use _count_element fast path for real dicts. (#3776) (cherry picked from commit 31aca4bf79217e6ec4c1d056d3ad7ed4dd469c78) --- diff --git a/Modules/_collectionsmodule.c b/Modules/_collectionsmodule.c index e7a24f3f05..af20d6edd9 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