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.
This commit is contained in:
Victor Stinner 2016-09-05 17:53:15 -07:00
parent ca08301ae0
commit ad8c83ad6b
5 changed files with 11 additions and 11 deletions

View file

@ -2009,7 +2009,7 @@ defdict_reduce(defdictobject *dd)
args = PyTuple_Pack(1, dd->default_factory); args = PyTuple_Pack(1, dd->default_factory);
if (args == NULL) if (args == NULL)
return NULL; return NULL;
items = _PyObject_CallMethodId((PyObject *)dd, &PyId_items, "()"); items = _PyObject_CallMethodId((PyObject *)dd, &PyId_items, NULL);
if (items == NULL) { if (items == NULL) {
Py_DECREF(args); Py_DECREF(args);
return NULL; return NULL;

View file

@ -1378,7 +1378,7 @@ time_time(void)
if (time != NULL) { if (time != NULL) {
_Py_IDENTIFIER(time); _Py_IDENTIFIER(time);
result = _PyObject_CallMethodId(time, &PyId_time, "()"); result = _PyObject_CallMethodId(time, &PyId_time, NULL);
Py_DECREF(time); Py_DECREF(time);
} }
return result; return result;
@ -2703,7 +2703,7 @@ date_isoformat(PyDateTime_Date *self)
static PyObject * static PyObject *
date_str(PyDateTime_Date *self) 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)) &format))
return NULL; return NULL;
tuple = _PyObject_CallMethodId((PyObject *)self, &PyId_timetuple, "()"); tuple = _PyObject_CallMethodId((PyObject *)self, &PyId_timetuple, NULL);
if (tuple == NULL) if (tuple == NULL)
return NULL; return NULL;
result = wrap_strftime((PyObject *)self, format, tuple, result = wrap_strftime((PyObject *)self, format, tuple,
@ -3675,7 +3675,7 @@ time_repr(PyDateTime_Time *self)
static PyObject * static PyObject *
time_str(PyDateTime_Time *self) time_str(PyDateTime_Time *self)
{ {
return _PyObject_CallMethodId((PyObject *)self, &PyId_isoformat, "()"); return _PyObject_CallMethodId((PyObject *)self, &PyId_isoformat, NULL);
} }
static PyObject * static PyObject *

View file

@ -2873,7 +2873,7 @@ save_dict(PicklerObject *self, PyObject *obj)
} else { } else {
_Py_IDENTIFIER(items); _Py_IDENTIFIER(items);
items = _PyObject_CallMethodId(obj, &PyId_items, "()"); items = _PyObject_CallMethodId(obj, &PyId_items, NULL);
if (items == NULL) if (items == NULL)
goto error; goto error;
iter = PyObject_GetIter(items); iter = PyObject_GetIter(items);

View file

@ -5758,7 +5758,7 @@ static PyObject * \
FUNCNAME(PyObject *self) \ FUNCNAME(PyObject *self) \
{ \ { \
_Py_static_string(id, OPSTR); \ _Py_static_string(id, OPSTR); \
return call_method(self, &id, "()"); \ return call_method(self, &id, NULL); \
} }
#define SLOT1(FUNCNAME, OPSTR, ARG1TYPE, ARGCODES) \ #define SLOT1(FUNCNAME, OPSTR, ARG1TYPE, ARGCODES) \
@ -5851,7 +5851,7 @@ FUNCNAME(PyObject *self, ARG1TYPE arg1, ARG2TYPE arg2) \
static Py_ssize_t static Py_ssize_t
slot_sq_length(PyObject *self) slot_sq_length(PyObject *self)
{ {
PyObject *res = call_method(self, &PyId___len__, "()"); PyObject *res = call_method(self, &PyId___len__, NULL);
Py_ssize_t len; Py_ssize_t len;
if (res == NULL) if (res == NULL)
@ -6065,7 +6065,7 @@ static PyObject *
slot_nb_index(PyObject *self) slot_nb_index(PyObject *self)
{ {
_Py_IDENTIFIER(__index__); _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) slot_tp_iternext(PyObject *self)
{ {
_Py_IDENTIFIER(__next__); _Py_IDENTIFIER(__next__);
return call_method(self, &PyId___next__, "()"); return call_method(self, &PyId___next__, NULL);
} }
static PyObject * static PyObject *

View file

@ -468,7 +468,7 @@ va_build_value(const char *format, va_list va, int flags)
int n = countformat(f, '\0'); int n = countformat(f, '\0');
va_list lva; va_list lva;
Py_VA_COPY(lva, va); Py_VA_COPY(lva, va);
if (n < 0) if (n < 0)
return NULL; return NULL;