Use PyDict_Copy() and PyDict_Update() instead of using PyObject_CallMethod()
to call the corresponding methods. This is not a performance improvement
since the times are still swamped by disk I/O, but cleans up the code just
a little.
diff --git a/Python/import.c b/Python/import.c
index f00a563..81b5067 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -392,7 +392,7 @@
dict = PyModule_GetDict(mod);
if (dict == NULL)
return NULL;
- copy = PyObject_CallMethod(dict, "copy", "");
+ copy = PyDict_Copy(dict);
if (copy == NULL)
return NULL;
PyDict_SetItemString(extensions, filename, copy);
@@ -403,7 +403,7 @@
PyObject *
_PyImport_FindExtension(char *name, char *filename)
{
- PyObject *dict, *mod, *mdict, *result;
+ PyObject *dict, *mod, *mdict;
if (extensions == NULL)
return NULL;
dict = PyDict_GetItemString(extensions, filename);
@@ -415,10 +415,8 @@
mdict = PyModule_GetDict(mod);
if (mdict == NULL)
return NULL;
- result = PyObject_CallMethod(mdict, "update", "O", dict);
- if (result == NULL)
+ if (PyDict_Update(mdict, dict))
return NULL;
- Py_DECREF(result);
if (Py_VerboseFlag)
PySys_WriteStderr("import %s # previously loaded (%s)\n",
name, filename);