]> granicus.if.org Git - python/commitdiff
Use _PyObject_CallMethodIdObjArgs()
authorVictor Stinner <victor.stinner@gmail.com>
Fri, 9 Dec 2016 15:09:30 +0000 (16:09 +0100)
committerVictor Stinner <victor.stinner@gmail.com>
Fri, 9 Dec 2016 15:09:30 +0000 (16:09 +0100)
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
Modules/arraymodule.c
Modules/cjkcodecs/multibytecodec.c
Python/_warnings.c
Python/import.c
Python/marshal.c

index 78c206e814d4679e71b9705b5d7f3da6094931ae..46ea2769253e1539bc709089946166d4347ec668 100644 (file)
@@ -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;
 }
index a68db18b0f2ca4bb3392722d91f99d05bb7a87fd..f1469df4c90907b75a3e09658b92ec55a290225b 100644 (file)
@@ -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;
index d1da189ddd3bef7e60b2246807f45727b8ae5443..15c89696ee3e459b4f6e477a6fadc13278ec7413 100644 (file)
@@ -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;
index 189bf704317c62eb365903759d4ca8c434ffec35..588fabb1f9df3a96ae1c5d523f95ba252a33416d 100644 (file)
@@ -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;
 
index 6bcb1d79fda429c1f1decf532379b1c2eb9af4e9..aef18005e235e139c8a41298f054d8c0100ea966 100644 (file)
@@ -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;
 }
index 0889e410505491bde1ae90c43212978bc5b9fef8..d71d3c2b9dbd3ed91e522688debbac24e1459f19 100644 (file)
@@ -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;
 }