From 31aca4bf79217e6ec4c1d056d3ad7ed4dd469c78 Mon Sep 17 00:00:00 2001 From: Oren Milman Date: Wed, 27 Sep 2017 06:18:21 +0300 Subject: [PATCH] bpo-31586: Use _count_element fast path for real dicts. --- Modules/_collectionsmodule.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Modules/_collectionsmodule.c b/Modules/_collectionsmodule.c index e78399ddef..b6cceee27f 100644 --- a/Modules/_collectionsmodule.c +++ b/Modules/_collectionsmodule.c @@ -2277,7 +2277,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 -- 2.40.0