From 147e099de630c0a7648c890d1958e240684342f0 Mon Sep 17 00:00:00 2001 From: Donghee Na Date: Thu, 18 Jun 2026 01:45:30 +0900 Subject: [PATCH] gh-150942: Optimize PicklerMemoProxy.copy() with _PyDict_SetItem_Take2 --- Modules/_pickle.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Modules/_pickle.c b/Modules/_pickle.c index a5595be251a738..034dd06b6ab460 100644 --- a/Modules/_pickle.c +++ b/Modules/_pickle.c @@ -12,6 +12,7 @@ #include "pycore_bytesobject.h" // _PyBytesWriter #include "pycore_ceval.h" // _Py_EnterRecursiveCall() #include "pycore_critical_section.h" // Py_BEGIN_CRITICAL_SECTION() +#include "pycore_dict.h" // _PyDict_SetItem_Take2() #include "pycore_long.h" // _PyLong_AsByteArray() #include "pycore_moduleobject.h" // _PyModule_GetState() #include "pycore_object.h" // _PyNone_Type @@ -5147,9 +5148,7 @@ _pickle_PicklerMemoProxy_copy_impl(PicklerMemoProxyObject *self) Py_DECREF(key); goto error; } - status = PyDict_SetItem(new_memo, key, value); - Py_DECREF(key); - Py_DECREF(value); + status = _PyDict_SetItem_Take2((PyDictObject *)new_memo, key, value); if (status < 0) goto error; }