[Python-checkins] cpython: Use _PyObject_CallMethodIdObjArgs()

victor.stinner python-checkins at python.org
Fri Dec 9 10:31:56 EST 2016


https://hg.python.org/cpython/rev/4545a2293e01
changeset:   105554:4545a2293e01
user:        Victor Stinner <victor.stinner at gmail.com>
date:        Fri Dec 09 16:09:30 2016 +0100
summary:
  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.

files:
  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
--- a/Modules/_pickle.c
+++ b/Modules/_pickle.c
@@ -4571,8 +4571,8 @@
 {
     _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 @@
     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
--- a/Modules/arraymodule.c
+++ b/Modules/arraymodule.c
@@ -1445,7 +1445,7 @@
         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
--- a/Modules/cjkcodecs/multibytecodec.c
+++ b/Modules/cjkcodecs/multibytecodec.c
@@ -1611,7 +1611,7 @@
     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 @@
     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
--- a/Python/_warnings.c
+++ b/Python/_warnings.c
@@ -26,7 +26,7 @@
 
     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
--- a/Python/import.c
+++ b/Python/import.c
@@ -1705,7 +1705,7 @@
         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
--- a/Python/marshal.c
+++ b/Python/marshal.c
@@ -1649,7 +1649,7 @@
     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;
 }

-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list