From 8d7c6dcde053eec618d8a0b5d016ce87b03b7f9b Mon Sep 17 00:00:00 2001 From: Donghee Na Date: Thu, 18 Jun 2026 09:08:00 +0900 Subject: [PATCH] gh-150942: Optimize PicklerMemoProxy.copy() with _PyDict_SetItem_Take2 (gh-151608) --- Modules/_pickle.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) 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; } -- 2.47.3