https://github.com/python/cpython/commit/8d7c6dcde053eec618d8a0b5d016ce87b03b7f9b
commit: 8d7c6dcde053eec618d8a0b5d016ce87b03b7f9b
branch: main
author: Donghee Na <[email protected]>
committer: corona10 <[email protected]>
date: 2026-06-18T09:08:00+09:00
summary:
gh-150942: Optimize PicklerMemoProxy.copy() with _PyDict_SetItem_Take2
(gh-151608)
files:
M Modules/_pickle.c
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;
}
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]