From: Donghee Na Date: Thu, 18 Jun 2026 00:08:00 +0000 (+0900) Subject: gh-150942: Optimize PicklerMemoProxy.copy() with _PyDict_SetItem_Take2 (gh-151608) X-Git-Url: http://git.ipfire.org/index.cgi?a=commitdiff_plain;h=8d7c6dcde053eec618d8a0b5d016ce87b03b7f9b;p=thirdparty%2FPython%2Fcpython.git gh-150942: Optimize PicklerMemoProxy.copy() with _PyDict_SetItem_Take2 (gh-151608) --- diff --git a/Modules/_pickle.c b/Modules/_pickle.c index a5595be251a7..034dd06b6ab4 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; }