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

(cherry picked from commit 31aca4bf79)
This commit is contained in:
Miss Islington (bot) 2017-09-26 20:45:57 -07:00 committed by Raymond Hettinger
parent 69b2dc8637
commit a1c49f6f09

View file

@ -2276,7 +2276,9 @@ _count_elements(PyObject *self, PyObject *args)
dict_setitem = _PyType_LookupId(&PyDict_Type, &PyId___setitem__); dict_setitem = _PyType_LookupId(&PyDict_Type, &PyId___setitem__);
if (mapping_get != NULL && mapping_get == dict_get && 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) { while (1) {
/* Fast path advantages: /* Fast path advantages:
1. Eliminate double hashing 1. Eliminate double hashing