mirror of https://github.com/python/cpython
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:
parent
ca08301ae0
commit
ad8c83ad6b
|
@ -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;
|
||||
|
|
|
@ -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 *
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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 *
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue