From ad8c83ad6b91bebbc124c0c36e67b9836ca3d90f Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Mon, 5 Sep 2016 17:53:15 -0700 Subject: Avoid inefficient way to call functions without argument Don't pass "()" format to PyObject_CallXXX() to call a function without argument: pass NULL as the format string instead. It avoids to have to parse a string to produce 0 argument. --- Modules/_collectionsmodule.c | 2 +- Modules/_datetimemodule.c | 8 ++++---- Modules/_pickle.c | 2 +- Objects/typeobject.c | 8 ++++---- Python/modsupport.c | 2 +- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Modules/_collectionsmodule.c b/Modules/_collectionsmodule.c index 3410dfe..1675102 100644 --- a/Modules/_collectionsmodule.c +++ b/Modules/_collectionsmodule.c @@ -2009,7 +2009,7 @@ defdict_reduce(defdictobject *dd) args = PyTuple_Pack(1, dd->default_factory); if (args == NULL) return NULL; - items = _PyObject_CallMethodId((PyObject *)dd, &PyId_items, "()"); + items = _PyObject_CallMethodId((PyObject *)dd, &PyId_items, NULL); if (items == NULL) { Py_DECREF(args); return NULL; diff --git a/Modules/_datetimemodule.c b/Modules/_datetimemodule.c index 7e95af7..b48dc2d 100644 --- a/Modules/_datetimemodule.c +++ b/Modules/_datetimemodule.c @@ -1378,7 +1378,7 @@ time_time(void) if (time != NULL) { _Py_IDENTIFIER(time); - result = _PyObject_CallMethodId(time, &PyId_time, "()"); + result = _PyObject_CallMethodId(time, &PyId_time, NULL); Py_DECREF(time); } return result; @@ -2703,7 +2703,7 @@ date_isoformat(PyDateTime_Date *self) static PyObject * date_str(PyDateTime_Date *self) { - return _PyObject_CallMethodId((PyObject *)self, &PyId_isoformat, "()"); + return _PyObject_CallMethodId((PyObject *)self, &PyId_isoformat, NULL); } @@ -2729,7 +2729,7 @@ date_strftime(PyDateTime_Date *self, PyObject *args, PyObject *kw) &format)) return NULL; - tuple = _PyObject_CallMethodId((PyObject *)self, &PyId_timetuple, "()"); + tuple = _PyObject_CallMethodId((PyObject *)self, &PyId_timetuple, NULL); if (tuple == NULL) return NULL; result = wrap_strftime((PyObject *)self, format, tuple, @@ -3675,7 +3675,7 @@ time_repr(PyDateTime_Time *self) static PyObject * time_str(PyDateTime_Time *self) { - return _PyObject_CallMethodId((PyObject *)self, &PyId_isoformat, "()"); + return _PyObject_CallMethodId((PyObject *)self, &PyId_isoformat, NULL); } static PyObject * diff --git a/Modules/_pickle.c b/Modules/_pickle.c index a8d414e..eae3394 100644 --- a/Modules/_pickle.c +++ b/Modules/_pickle.c @@ -2873,7 +2873,7 @@ save_dict(PicklerObject *self, PyObject *obj) } else { _Py_IDENTIFIER(items); - items = _PyObject_CallMethodId(obj, &PyId_items, "()"); + items = _PyObject_CallMethodId(obj, &PyId_items, NULL); if (items == NULL) goto error; iter = PyObject_GetIter(items); diff --git a/Objects/typeobject.c b/Objects/typeobject.c index 6cffb4e..209d4fa 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -5758,7 +5758,7 @@ static PyObject * \ FUNCNAME(PyObject *self) \ { \ _Py_static_string(id, OPSTR); \ - return call_method(self, &id, "()"); \ + return call_method(self, &id, NULL); \ } #define SLOT1(FUNCNAME, OPSTR, ARG1TYPE, ARGCODES) \ @@ -5851,7 +5851,7 @@ FUNCNAME(PyObject *self, ARG1TYPE arg1, ARG2TYPE arg2) \ static Py_ssize_t slot_sq_length(PyObject *self) { - PyObject *res = call_method(self, &PyId___len__, "()"); + PyObject *res = call_method(self, &PyId___len__, NULL); Py_ssize_t len; if (res == NULL) @@ -6065,7 +6065,7 @@ static PyObject * slot_nb_index(PyObject *self) { _Py_IDENTIFIER(__index__); - return call_method(self, &PyId___index__, "()"); + return call_method(self, &PyId___index__, NULL); } @@ -6351,7 +6351,7 @@ static PyObject * slot_tp_iternext(PyObject *self) { _Py_IDENTIFIER(__next__); - return call_method(self, &PyId___next__, "()"); + return call_method(self, &PyId___next__, NULL); } static PyObject * diff --git a/Python/modsupport.c b/Python/modsupport.c index 4911f06..37c0ce7 100644 --- a/Python/modsupport.c +++ b/Python/modsupport.c @@ -468,7 +468,7 @@ va_build_value(const char *format, va_list va, int flags) int n = countformat(f, '\0'); va_list lva; - Py_VA_COPY(lva, va); + Py_VA_COPY(lva, va); if (n < 0) return NULL; -- cgit v0.12