From 55ba38a48097e4b21b406cc617df1481727f5c25 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Fri, 9 Dec 2016 16:09:30 +0100 Subject: [PATCH] Use _PyObject_CallMethodIdObjArgs() Issue #28915: Replace _PyObject_CallMethodId() with _PyObject_CallMethodIdObjArgs() in various modules when the format string was only made of "O" formats, PyObject* arguments. _PyObject_CallMethodIdObjArgs() avoids the creation of a temporary tuple and doesn't have to parse a format string. --- Modules/_pickle.c | 6 +++--- Modules/arraymodule.c | 2 +- Modules/cjkcodecs/multibytecodec.c | 4 ++-- Python/_warnings.c | 2 +- Python/import.c | 2 +- Python/marshal.c | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Modules/_pickle.c b/Modules/_pickle.c index 78c206e814d..46ea2769253 100644 --- a/Modules/_pickle.c +++ b/Modules/_pickle.c @@ -4571,8 +4571,8 @@ find_class(UnpicklerObject *self, PyObject *module_name, PyObject *global_name) { _Py_IDENTIFIER(find_class); - return _PyObject_CallMethodId((PyObject *)self, &PyId_find_class, "OO", - module_name, global_name); + return _PyObject_CallMethodIdObjArgs((PyObject *)self, &PyId_find_class, + module_name, global_name, NULL); } static Py_ssize_t @@ -5184,7 +5184,7 @@ instantiate(PyObject *cls, PyObject *args) else { _Py_IDENTIFIER(__new__); - result = _PyObject_CallMethodId(cls, &PyId___new__, "O", cls); + result = _PyObject_CallMethodIdObjArgs(cls, &PyId___new__, cls, NULL); } return result; } diff --git a/Modules/arraymodule.c b/Modules/arraymodule.c index a68db18b0f2..f1469df4c90 100644 --- a/Modules/arraymodule.c +++ b/Modules/arraymodule.c @@ -1445,7 +1445,7 @@ array_array_tofile(arrayobject *self, PyObject *f) bytes = PyBytes_FromStringAndSize(ptr, size); if (bytes == NULL) return NULL; - res = _PyObject_CallMethodId(f, &PyId_write, "O", bytes); + res = _PyObject_CallMethodIdObjArgs(f, &PyId_write, bytes, NULL); Py_DECREF(bytes); if (res == NULL) return NULL; diff --git a/Modules/cjkcodecs/multibytecodec.c b/Modules/cjkcodecs/multibytecodec.c index d1da189ddd3..15c89696ee3 100644 --- a/Modules/cjkcodecs/multibytecodec.c +++ b/Modules/cjkcodecs/multibytecodec.c @@ -1611,7 +1611,7 @@ mbstreamwriter_iwrite(MultibyteStreamWriterObject *self, if (str == NULL) return -1; - wr = _PyObject_CallMethodId(self->stream, &PyId_write, "O", str); + wr = _PyObject_CallMethodIdObjArgs(self->stream, &PyId_write, str, NULL); Py_DECREF(str); if (wr == NULL) return -1; @@ -1702,7 +1702,7 @@ _multibytecodec_MultibyteStreamWriter_reset_impl(MultibyteStreamWriterObject *se if (PyBytes_Size(pwrt) > 0) { PyObject *wr; - wr = _PyObject_CallMethodId(self->stream, &PyId_write, "O", pwrt); + wr = _PyObject_CallMethodIdObjArgs(self->stream, &PyId_write, pwrt); if (wr == NULL) { Py_DECREF(pwrt); return NULL; diff --git a/Python/_warnings.c b/Python/_warnings.c index 189bf704317..588fabb1f9d 100644 --- a/Python/_warnings.c +++ b/Python/_warnings.c @@ -26,7 +26,7 @@ check_matched(PyObject *obj, PyObject *arg) if (obj == Py_None) return 1; - result = _PyObject_CallMethodId(obj, &PyId_match, "O", arg); + result = _PyObject_CallMethodIdObjArgs(obj, &PyId_match, arg, NULL); if (result == NULL) return -1; diff --git a/Python/import.c b/Python/import.c index 6bcb1d79fda..aef18005e23 100644 --- a/Python/import.c +++ b/Python/import.c @@ -1705,7 +1705,7 @@ PyImport_ReloadModule(PyObject *m) Py_INCREF(imp); } - reloaded_module = _PyObject_CallMethodId(imp, &PyId_reload, "O", m); + reloaded_module = _PyObject_CallMethodIdObjArgs(imp, &PyId_reload, m, NULL); Py_DECREF(imp); return reloaded_module; } diff --git a/Python/marshal.c b/Python/marshal.c index 0889e410505..d71d3c2b9db 100644 --- a/Python/marshal.c +++ b/Python/marshal.c @@ -1649,7 +1649,7 @@ marshal_dump(PyObject *self, PyObject *args) s = PyMarshal_WriteObjectToString(x, version); if (s == NULL) return NULL; - res = _PyObject_CallMethodId(f, &PyId_write, "O", s); + res = _PyObject_CallMethodIdObjArgs(f, &PyId_write, s, NULL); Py_DECREF(s); return res; }