summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Misc/NEWS3
-rw-r--r--Objects/dictobject.c6
2 files changed, 6 insertions, 3 deletions
diff --git a/Misc/NEWS b/Misc/NEWS
index aac1badc71..a182887f71 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -18,6 +18,9 @@ Core and Builtins
by external AST optimizers, but the compiler does not emit directly such
node.
+- Issue #23601: Sped-up allocation of dict key objects by using Python's
+ small object allocator. (Contributed by Julian Taylor.)
+
- Issue #18018: Import raises ImportError instead of SystemError if a relative
import is attempted without a known parent package.
diff --git a/Objects/dictobject.c b/Objects/dictobject.c
index f6a98b4b02..31a6322a4f 100644
--- a/Objects/dictobject.c
+++ b/Objects/dictobject.c
@@ -324,7 +324,7 @@ static PyDictKeysObject *new_keys_object(Py_ssize_t size)
assert(size >= PyDict_MINSIZE_SPLIT);
assert(IS_POWER_OF_2(size));
- dk = PyMem_MALLOC(sizeof(PyDictKeysObject) +
+ dk = PyObject_MALLOC(sizeof(PyDictKeysObject) +
sizeof(PyDictKeyEntry) * (size-1));
if (dk == NULL) {
PyErr_NoMemory();
@@ -353,7 +353,7 @@ free_keys_object(PyDictKeysObject *keys)
Py_XDECREF(entries[i].me_key);
Py_XDECREF(entries[i].me_value);
}
- PyMem_FREE(keys);
+ PyObject_FREE(keys);
}
#define new_values(size) PyMem_NEW(PyObject *, size)
@@ -964,7 +964,7 @@ dictresize(PyDictObject *mp, Py_ssize_t minused)
}
}
assert(oldkeys->dk_refcnt == 1);
- DK_DEBUG_DECREF PyMem_FREE(oldkeys);
+ DK_DEBUG_DECREF PyObject_FREE(oldkeys);
}
return 0;
}