Don't parenthesis in _PyObject_CallMethodId() format
authorVictor Stinner <victor.stinner@gmail.com>
Thu, 8 Dec 2016 23:33:39 +0000 (00:33 +0100)
committerVictor Stinner <victor.stinner@gmail.com>
Thu, 8 Dec 2016 23:33:39 +0000 (00:33 +0100)
Issue #28915: Without parenthesis, _PyObject_CallMethodId() avoids the creation
a temporary tuple, and so is more efficient.

Modules/_datetimemodule.c
Modules/_decimal/_decimal.c
Modules/_json.c

index c14aa4f93be39def64e74fe39ada1bb3ab29fc9f..0999218693ce3c973e464ca7c945ca044efba61e 100644 (file)
@@ -4673,7 +4673,7 @@ datetime_repr(PyDateTime_DateTime *self)
 static PyObject *
 datetime_str(PyDateTime_DateTime *self)
 {
-    return _PyObject_CallMethodId((PyObject *)self, &PyId_isoformat, "(s)", " ");
+    return _PyObject_CallMethodId((PyObject *)self, &PyId_isoformat, "s", " ");
 }
 
 static PyObject *
index 9797089538335101d4e48868fd908d0475240a9b..9e8625dab5614ddb9f4c4751e1eee3a3585c577a 100644 (file)
@@ -5716,7 +5716,7 @@ PyInit__decimal(void)
     /* DecimalTuple */
     ASSIGN_PTR(collections, PyImport_ImportModule("collections"));
     ASSIGN_PTR(DecimalTuple, (PyTypeObject *)PyObject_CallMethod(collections,
-                                 "namedtuple", "(ss)", "DecimalTuple",
+                                 "namedtuple", "ss", "DecimalTuple",
                                  "sign digits exponent"));
 
     ASSIGN_PTR(obj, PyUnicode_FromString("decimal"));
index d3dbf98805d414624d76278be7e34a33c0600251..5cf39f2aa17e92b0c4d97f1f0b626675567bc7ec 100644 (file)
@@ -335,7 +335,7 @@ raise_errmsg(const char *msg, PyObject *s, Py_ssize_t end)
         if (JSONDecodeError == NULL)
             return;
     }
-    exc = PyObject_CallFunction(JSONDecodeError, "(zOn)", msg, s, end);
+    exc = PyObject_CallFunction(JSONDecodeError, "zOn", msg, s, end);
     if (exc) {
         PyErr_SetObject(JSONDecodeError, exc);
         Py_DECREF(exc);