bpo-37337: Add _PyObject_CallMethodNoArgs() (GH-14267)

This commit is contained in:
Jeroen Demeyer 2019-07-08 10:19:25 +02:00 committed by Inada Naoki
parent 38f44b4a4a
commit 762f93ff2e
37 changed files with 154 additions and 132 deletions

View File

@ -364,6 +364,17 @@ Object Protocol
*NULL* on failure. *NULL* on failure.
.. c:function:: PyObject* _PyObject_CallMethodNoArgs(PyObject *obj, PyObject *name)
Call a method of the Python object *obj* without arguments,
where the name of the method is given as a Python string object in *name*.
Return the result of the call on success, or raise an exception and return
*NULL* on failure.
.. versionadded:: 3.9
.. c:function:: PyObject* _PyObject_Vectorcall(PyObject *callable, PyObject *const *args, size_t nargsf, PyObject *kwnames) .. c:function:: PyObject* _PyObject_Vectorcall(PyObject *callable, PyObject *const *args, size_t nargsf, PyObject *kwnames)
Call a callable Python object *callable*, using Call a callable Python object *callable*, using

View File

@ -156,6 +156,13 @@ PyAPI_FUNC(PyObject *) _PyObject_VectorcallMethod(
PyObject *name, PyObject *const *args, PyObject *name, PyObject *const *args,
size_t nargsf, PyObject *kwnames); size_t nargsf, PyObject *kwnames);
static inline PyObject *
_PyObject_CallMethodNoArgs(PyObject *self, PyObject *name)
{
return _PyObject_VectorcallMethod(name, &self,
1 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL);
}
/* Like PyObject_CallMethod(), but expect a _Py_Identifier* /* Like PyObject_CallMethod(), but expect a _Py_Identifier*
as the method name. */ as the method name. */
PyAPI_FUNC(PyObject *) _PyObject_CallMethodId(PyObject *obj, PyAPI_FUNC(PyObject *) _PyObject_CallMethodId(PyObject *obj,
@ -184,6 +191,13 @@ _PyObject_VectorcallMethodId(
return _PyObject_VectorcallMethod(oname, args, nargsf, kwnames); return _PyObject_VectorcallMethod(oname, args, nargsf, kwnames);
} }
static inline PyObject *
_PyObject_CallMethodIdNoArgs(PyObject *self, _Py_Identifier *name)
{
return _PyObject_VectorcallMethodId(name, &self,
1 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL);
}
PyAPI_FUNC(int) _PyObject_HasLen(PyObject *o); PyAPI_FUNC(int) _PyObject_HasLen(PyObject *o);
/* Guess the size of object 'o' using len(o) or o.__length_hint__(). /* Guess the size of object 'o' using len(o) or o.__length_hint__().

View File

@ -1 +1,2 @@
Add :c:func:`_PyObject_VectorcallMethod` for fast calling of methods. Add fast functions for calling methods: :c:func:`_PyObject_VectorcallMethod`
and :c:func:`_PyObject_CallMethodNoArgs`

View File

@ -332,7 +332,7 @@ get_event_loop(void)
return NULL; return NULL;
} }
loop = _PyObject_CallMethodId(policy, &PyId_get_event_loop, NULL); loop = _PyObject_CallMethodIdNoArgs(policy, &PyId_get_event_loop);
Py_DECREF(policy); Py_DECREF(policy);
return loop; return loop;
} }
@ -493,7 +493,7 @@ future_init(FutureObj *fut, PyObject *loop)
} }
fut->fut_loop = loop; fut->fut_loop = loop;
res = _PyObject_CallMethodId(fut->fut_loop, &PyId_get_debug, NULL); res = _PyObject_CallMethodIdNoArgs(fut->fut_loop, &PyId_get_debug);
if (res == NULL) { if (res == NULL) {
return -1; return -1;
} }
@ -1295,9 +1295,8 @@ FutureObj_repr(FutureObj *fut)
ENSURE_FUTURE_ALIVE(fut) ENSURE_FUTURE_ALIVE(fut)
PyObject *rinfo = _PyObject_CallMethodIdObjArgs((PyObject*)fut, PyObject *rinfo = _PyObject_CallMethodIdNoArgs((PyObject*)fut,
&PyId__repr_info, &PyId__repr_info);
NULL);
if (rinfo == NULL) { if (rinfo == NULL) {
return NULL; return NULL;
} }
@ -2197,8 +2196,7 @@ _asyncio_Task_cancel_impl(TaskObj *self)
PyObject *res; PyObject *res;
int is_true; int is_true;
res = _PyObject_CallMethodId( res = _PyObject_CallMethodIdNoArgs(self->task_fut_waiter, &PyId_cancel);
self->task_fut_waiter, &PyId_cancel, NULL);
if (res == NULL) { if (res == NULL) {
return NULL; return NULL;
} }
@ -2735,7 +2733,7 @@ set_exception:
if (task->task_must_cancel) { if (task->task_must_cancel) {
PyObject *r; PyObject *r;
int is_true; int is_true;
r = _PyObject_CallMethodId(result, &PyId_cancel, NULL); r = _PyObject_CallMethodIdNoArgs(result, &PyId_cancel);
if (r == NULL) { if (r == NULL) {
return NULL; return NULL;
} }
@ -2826,7 +2824,7 @@ set_exception:
if (task->task_must_cancel) { if (task->task_must_cancel) {
PyObject *r; PyObject *r;
int is_true; int is_true;
r = _PyObject_CallMethodId(result, &PyId_cancel, NULL); r = _PyObject_CallMethodIdNoArgs(result, &PyId_cancel);
if (r == NULL) { if (r == NULL) {
return NULL; return NULL;
} }

View File

@ -2039,7 +2039,7 @@ defdict_reduce(defdictobject *dd, PyObject *Py_UNUSED(ignored))
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, NULL); items = _PyObject_CallMethodIdNoArgs((PyObject *)dd, &PyId_items);
if (items == NULL) { if (items == NULL) {
Py_DECREF(args); Py_DECREF(args);
return NULL; return NULL;

View File

@ -3974,7 +3974,7 @@ _build_result(PyObject *result, PyObject *callargs,
_Py_IDENTIFIER(__ctypes_from_outparam__); _Py_IDENTIFIER(__ctypes_from_outparam__);
v = PyTuple_GET_ITEM(callargs, i); v = PyTuple_GET_ITEM(callargs, i);
v = _PyObject_CallMethodId(v, &PyId___ctypes_from_outparam__, NULL); v = _PyObject_CallMethodIdNoArgs(v, &PyId___ctypes_from_outparam__);
if (v == NULL || numretvals == 1) { if (v == NULL || numretvals == 1) {
Py_DECREF(callargs); Py_DECREF(callargs);
return v; return v;

View File

@ -2906,7 +2906,7 @@ _curses_getwin(PyObject *module, PyObject *file)
if (_Py_set_inheritable(fileno(fp), 0, NULL) < 0) if (_Py_set_inheritable(fileno(fp), 0, NULL) < 0)
goto error; goto error;
data = _PyObject_CallMethodId(file, &PyId_read, NULL); data = _PyObject_CallMethodIdNoArgs(file, &PyId_read);
if (data == NULL) if (data == NULL)
goto error; goto error;
if (!PyBytes_Check(data)) { if (!PyBytes_Check(data)) {

View File

@ -1659,7 +1659,7 @@ time_time(void)
if (time != NULL) { if (time != NULL) {
_Py_IDENTIFIER(time); _Py_IDENTIFIER(time);
result = _PyObject_CallMethodId(time, &PyId_time, NULL); result = _PyObject_CallMethodIdNoArgs(time, &PyId_time);
Py_DECREF(time); Py_DECREF(time);
} }
return result; return result;
@ -1918,7 +1918,7 @@ get_float_as_integer_ratio(PyObject *floatobj)
PyObject *ratio; PyObject *ratio;
assert(floatobj && PyFloat_Check(floatobj)); assert(floatobj && PyFloat_Check(floatobj));
ratio = _PyObject_CallMethodId(floatobj, &PyId_as_integer_ratio, NULL); ratio = _PyObject_CallMethodIdNoArgs(floatobj, &PyId_as_integer_ratio);
if (ratio == NULL) { if (ratio == NULL) {
return NULL; return NULL;
} }
@ -3162,7 +3162,7 @@ date_isoformat(PyDateTime_Date *self, PyObject *Py_UNUSED(ignored))
static PyObject * static PyObject *
date_str(PyDateTime_Date *self) date_str(PyDateTime_Date *self)
{ {
return _PyObject_CallMethodId((PyObject *)self, &PyId_isoformat, NULL); return _PyObject_CallMethodIdNoArgs((PyObject *)self, &PyId_isoformat);
} }
@ -3188,7 +3188,7 @@ date_strftime(PyDateTime_Date *self, PyObject *args, PyObject *kw)
&format)) &format))
return NULL; return NULL;
tuple = _PyObject_CallMethodId((PyObject *)self, &PyId_timetuple, NULL); tuple = _PyObject_CallMethodIdNoArgs((PyObject *)self, &PyId_timetuple);
if (tuple == NULL) if (tuple == NULL)
return NULL; return NULL;
result = wrap_strftime((PyObject *)self, format, tuple, result = wrap_strftime((PyObject *)self, format, tuple,
@ -4175,7 +4175,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, NULL); return _PyObject_CallMethodIdNoArgs((PyObject *)self, &PyId_isoformat);
} }
static PyObject * static PyObject *

View File

@ -370,7 +370,7 @@ static PyObject *
dbm__exit__(PyObject *self, PyObject *args) dbm__exit__(PyObject *self, PyObject *args)
{ {
_Py_IDENTIFIER(close); _Py_IDENTIFIER(close);
return _PyObject_CallMethodId(self, &PyId_close, NULL); return _PyObject_CallMethodIdNoArgs(self, &PyId_close);
} }

View File

@ -497,7 +497,7 @@ static PyObject *
dbm__exit__(PyObject *self, PyObject *args) dbm__exit__(PyObject *self, PyObject *args)
{ {
_Py_IDENTIFIER(close); _Py_IDENTIFIER(close);
return _PyObject_CallMethodId(self, &PyId_close, NULL); return _PyObject_CallMethodIdNoArgs(self, &PyId_close);
} }
static PyMethodDef dbm_methods[] = { static PyMethodDef dbm_methods[] = {

View File

@ -400,7 +400,7 @@ _io_open_impl(PyObject *module, PyObject *file, const char *mode,
/* buffering */ /* buffering */
if (buffering < 0) { if (buffering < 0) {
PyObject *res = _PyObject_CallMethodId(raw, &PyId_isatty, NULL); PyObject *res = _PyObject_CallMethodIdNoArgs(raw, &PyId_isatty);
if (res == NULL) if (res == NULL)
goto error; goto error;
isatty = PyLong_AsLong(res); isatty = PyLong_AsLong(res);
@ -494,7 +494,7 @@ _io_open_impl(PyObject *module, PyObject *file, const char *mode,
if (result != NULL) { if (result != NULL) {
PyObject *exc, *val, *tb, *close_result; PyObject *exc, *val, *tb, *close_result;
PyErr_Fetch(&exc, &val, &tb); PyErr_Fetch(&exc, &val, &tb);
close_result = _PyObject_CallMethodId(result, &PyId_close, NULL); close_result = _PyObject_CallMethodIdNoArgs(result, &PyId_close);
_PyErr_ChainExceptions(exc, val, tb); _PyErr_ChainExceptions(exc, val, tb);
Py_XDECREF(close_result); Py_XDECREF(close_result);
Py_DECREF(result); Py_DECREF(result);

View File

@ -461,7 +461,7 @@ static PyObject *
buffered_simple_flush(buffered *self, PyObject *args) buffered_simple_flush(buffered *self, PyObject *args)
{ {
CHECK_INITIALIZED(self) CHECK_INITIALIZED(self)
return PyObject_CallMethodObjArgs(self->raw, _PyIO_str_flush, NULL); return _PyObject_CallMethodNoArgs(self->raw, _PyIO_str_flush);
} }
static int static int
@ -513,7 +513,7 @@ buffered_close(buffered *self, PyObject *args)
} }
/* flush() will most probably re-take the lock, so drop it first */ /* flush() will most probably re-take the lock, so drop it first */
LEAVE_BUFFERED(self) LEAVE_BUFFERED(self)
res = PyObject_CallMethodObjArgs((PyObject *)self, _PyIO_str_flush, NULL); res = _PyObject_CallMethodNoArgs((PyObject *)self, _PyIO_str_flush);
if (!ENTER_BUFFERED(self)) if (!ENTER_BUFFERED(self))
return NULL; return NULL;
if (res == NULL) if (res == NULL)
@ -521,7 +521,7 @@ buffered_close(buffered *self, PyObject *args)
else else
Py_DECREF(res); Py_DECREF(res);
res = PyObject_CallMethodObjArgs(self->raw, _PyIO_str_close, NULL); res = _PyObject_CallMethodNoArgs(self->raw, _PyIO_str_close);
if (self->buffer) { if (self->buffer) {
PyMem_Free(self->buffer); PyMem_Free(self->buffer);
@ -545,7 +545,7 @@ buffered_detach(buffered *self, PyObject *Py_UNUSED(ignored))
{ {
PyObject *raw, *res; PyObject *raw, *res;
CHECK_INITIALIZED(self) CHECK_INITIALIZED(self)
res = PyObject_CallMethodObjArgs((PyObject *)self, _PyIO_str_flush, NULL); res = _PyObject_CallMethodNoArgs((PyObject *)self, _PyIO_str_flush);
if (res == NULL) if (res == NULL)
return NULL; return NULL;
Py_DECREF(res); Py_DECREF(res);
@ -562,21 +562,21 @@ static PyObject *
buffered_seekable(buffered *self, PyObject *Py_UNUSED(ignored)) buffered_seekable(buffered *self, PyObject *Py_UNUSED(ignored))
{ {
CHECK_INITIALIZED(self) CHECK_INITIALIZED(self)
return PyObject_CallMethodObjArgs(self->raw, _PyIO_str_seekable, NULL); return _PyObject_CallMethodNoArgs(self->raw, _PyIO_str_seekable);
} }
static PyObject * static PyObject *
buffered_readable(buffered *self, PyObject *Py_UNUSED(ignored)) buffered_readable(buffered *self, PyObject *Py_UNUSED(ignored))
{ {
CHECK_INITIALIZED(self) CHECK_INITIALIZED(self)
return PyObject_CallMethodObjArgs(self->raw, _PyIO_str_readable, NULL); return _PyObject_CallMethodNoArgs(self->raw, _PyIO_str_readable);
} }
static PyObject * static PyObject *
buffered_writable(buffered *self, PyObject *Py_UNUSED(ignored)) buffered_writable(buffered *self, PyObject *Py_UNUSED(ignored))
{ {
CHECK_INITIALIZED(self) CHECK_INITIALIZED(self)
return PyObject_CallMethodObjArgs(self->raw, _PyIO_str_writable, NULL); return _PyObject_CallMethodNoArgs(self->raw, _PyIO_str_writable);
} }
static PyObject * static PyObject *
@ -599,14 +599,14 @@ static PyObject *
buffered_fileno(buffered *self, PyObject *Py_UNUSED(ignored)) buffered_fileno(buffered *self, PyObject *Py_UNUSED(ignored))
{ {
CHECK_INITIALIZED(self) CHECK_INITIALIZED(self)
return PyObject_CallMethodObjArgs(self->raw, _PyIO_str_fileno, NULL); return _PyObject_CallMethodNoArgs(self->raw, _PyIO_str_fileno);
} }
static PyObject * static PyObject *
buffered_isatty(buffered *self, PyObject *Py_UNUSED(ignored)) buffered_isatty(buffered *self, PyObject *Py_UNUSED(ignored))
{ {
CHECK_INITIALIZED(self) CHECK_INITIALIZED(self)
return PyObject_CallMethodObjArgs(self->raw, _PyIO_str_isatty, NULL); return _PyObject_CallMethodNoArgs(self->raw, _PyIO_str_isatty);
} }
/* Forward decls */ /* Forward decls */
@ -670,7 +670,7 @@ _buffered_raw_tell(buffered *self)
{ {
Py_off_t n; Py_off_t n;
PyObject *res; PyObject *res;
res = PyObject_CallMethodObjArgs(self->raw, _PyIO_str_tell, NULL); res = _PyObject_CallMethodNoArgs(self->raw, _PyIO_str_tell);
if (res == NULL) if (res == NULL)
return -1; return -1;
n = PyNumber_AsOff_t(res, PyExc_ValueError); n = PyNumber_AsOff_t(res, PyExc_ValueError);
@ -1350,8 +1350,8 @@ buffered_iternext(buffered *self)
line = _buffered_readline(self, -1); line = _buffered_readline(self, -1);
} }
else { else {
line = PyObject_CallMethodObjArgs((PyObject *)self, line = _PyObject_CallMethodNoArgs((PyObject *)self,
_PyIO_str_readline, NULL); _PyIO_str_readline);
if (line && !PyBytes_Check(line)) { if (line && !PyBytes_Check(line)) {
PyErr_Format(PyExc_OSError, PyErr_Format(PyExc_OSError,
"readline() should have returned a bytes object, " "readline() should have returned a bytes object, "
@ -1566,7 +1566,7 @@ _bufferedreader_read_all(buffered *self)
} }
/* Read until EOF or until read() would block. */ /* Read until EOF or until read() would block. */
data = PyObject_CallMethodObjArgs(self->raw, _PyIO_str_read, NULL); data = _PyObject_CallMethodNoArgs(self->raw, _PyIO_str_read);
if (data == NULL) if (data == NULL)
goto cleanup; goto cleanup;
if (data != Py_None && !PyBytes_Check(data)) { if (data != Py_None && !PyBytes_Check(data)) {

View File

@ -235,7 +235,7 @@ _io__IOBase_close_impl(PyObject *self)
Py_RETURN_NONE; Py_RETURN_NONE;
} }
res = PyObject_CallMethodObjArgs(self, _PyIO_str_flush, NULL); res = _PyObject_CallMethodNoArgs(self, _PyIO_str_flush);
PyErr_Fetch(&exc, &val, &tb); PyErr_Fetch(&exc, &val, &tb);
rc = _PyObject_SetAttrId(self, &PyId___IOBase_closed, Py_True); rc = _PyObject_SetAttrId(self, &PyId___IOBase_closed, Py_True);
@ -281,8 +281,7 @@ iobase_finalize(PyObject *self)
finalization process. */ finalization process. */
if (_PyObject_SetAttrId(self, &PyId__finalizing, Py_True)) if (_PyObject_SetAttrId(self, &PyId__finalizing, Py_True))
PyErr_Clear(); PyErr_Clear();
res = PyObject_CallMethodObjArgs((PyObject *) self, _PyIO_str_close, res = _PyObject_CallMethodNoArgs((PyObject *)self, _PyIO_str_close);
NULL);
/* Silencing I/O errors is bad, but printing spurious tracebacks is /* Silencing I/O errors is bad, but printing spurious tracebacks is
equally as bad, and potentially more frequent (because of equally as bad, and potentially more frequent (because of
shutdown issues). */ shutdown issues). */
@ -383,7 +382,7 @@ _io__IOBase_seekable_impl(PyObject *self)
PyObject * PyObject *
_PyIOBase_check_seekable(PyObject *self, PyObject *args) _PyIOBase_check_seekable(PyObject *self, PyObject *args)
{ {
PyObject *res = PyObject_CallMethodObjArgs(self, _PyIO_str_seekable, NULL); PyObject *res = _PyObject_CallMethodNoArgs(self, _PyIO_str_seekable);
if (res == NULL) if (res == NULL)
return NULL; return NULL;
if (res != Py_True) { if (res != Py_True) {
@ -416,7 +415,7 @@ _io__IOBase_readable_impl(PyObject *self)
PyObject * PyObject *
_PyIOBase_check_readable(PyObject *self, PyObject *args) _PyIOBase_check_readable(PyObject *self, PyObject *args)
{ {
PyObject *res = PyObject_CallMethodObjArgs(self, _PyIO_str_readable, NULL); PyObject *res = _PyObject_CallMethodNoArgs(self, _PyIO_str_readable);
if (res == NULL) if (res == NULL)
return NULL; return NULL;
if (res != Py_True) { if (res != Py_True) {
@ -449,7 +448,7 @@ _io__IOBase_writable_impl(PyObject *self)
PyObject * PyObject *
_PyIOBase_check_writable(PyObject *self, PyObject *args) _PyIOBase_check_writable(PyObject *self, PyObject *args)
{ {
PyObject *res = PyObject_CallMethodObjArgs(self, _PyIO_str_writable, NULL); PyObject *res = _PyObject_CallMethodNoArgs(self, _PyIO_str_writable);
if (res == NULL) if (res == NULL)
return NULL; return NULL;
if (res != Py_True) { if (res != Py_True) {
@ -478,7 +477,7 @@ iobase_enter(PyObject *self, PyObject *args)
static PyObject * static PyObject *
iobase_exit(PyObject *self, PyObject *args) iobase_exit(PyObject *self, PyObject *args)
{ {
return PyObject_CallMethodObjArgs(self, _PyIO_str_close, NULL); return _PyObject_CallMethodNoArgs(self, _PyIO_str_close);
} }
/* Lower-level APIs */ /* Lower-level APIs */
@ -656,7 +655,7 @@ iobase_iter(PyObject *self)
static PyObject * static PyObject *
iobase_iternext(PyObject *self) iobase_iternext(PyObject *self)
{ {
PyObject *line = PyObject_CallMethodObjArgs(self, _PyIO_str_readline, NULL); PyObject *line = _PyObject_CallMethodNoArgs(self, _PyIO_str_readline);
if (line == NULL) if (line == NULL)
return NULL; return NULL;
@ -921,7 +920,7 @@ _io__RawIOBase_read_impl(PyObject *self, Py_ssize_t n)
if (n < 0) { if (n < 0) {
_Py_IDENTIFIER(readall); _Py_IDENTIFIER(readall);
return _PyObject_CallMethodId(self, &PyId_readall, NULL); return _PyObject_CallMethodIdNoArgs(self, &PyId_readall);
} }
/* TODO: allocate a bytes object directly instead and manually construct /* TODO: allocate a bytes object directly instead and manually construct

View File

@ -408,8 +408,8 @@ stringio_iternext(stringio *self)
} }
else { else {
/* XXX is subclassing StringIO really supported? */ /* XXX is subclassing StringIO really supported? */
line = PyObject_CallMethodObjArgs((PyObject *)self, line = _PyObject_CallMethodNoArgs((PyObject *)self,
_PyIO_str_readline, NULL); _PyIO_str_readline);
if (line && !PyUnicode_Check(line)) { if (line && !PyUnicode_Check(line)) {
PyErr_Format(PyExc_OSError, PyErr_Format(PyExc_OSError,
"readline() should have returned a str object, " "readline() should have returned a str object, "

View File

@ -527,8 +527,8 @@ _io_IncrementalNewlineDecoder_getstate_impl(nldecoder_object *self)
unsigned long long flag; unsigned long long flag;
if (self->decoder != Py_None) { if (self->decoder != Py_None) {
PyObject *state = PyObject_CallMethodObjArgs(self->decoder, PyObject *state = _PyObject_CallMethodNoArgs(self->decoder,
_PyIO_str_getstate, NULL); _PyIO_str_getstate);
if (state == NULL) if (state == NULL)
return NULL; return NULL;
if (!PyTuple_Check(state)) { if (!PyTuple_Check(state)) {
@ -601,7 +601,7 @@ _io_IncrementalNewlineDecoder_reset_impl(nldecoder_object *self)
self->seennl = 0; self->seennl = 0;
self->pendingcr = 0; self->pendingcr = 0;
if (self->decoder != Py_None) if (self->decoder != Py_None)
return PyObject_CallMethodObjArgs(self->decoder, _PyIO_str_reset, NULL); return _PyObject_CallMethodNoArgs(self->decoder, _PyIO_str_reset);
else else
Py_RETURN_NONE; Py_RETURN_NONE;
} }
@ -862,7 +862,7 @@ _textiowrapper_set_decoder(textio *self, PyObject *codec_info,
PyObject *res; PyObject *res;
int r; int r;
res = _PyObject_CallMethodId(self->buffer, &PyId_readable, NULL); res = _PyObject_CallMethodIdNoArgs(self->buffer, &PyId_readable);
if (res == NULL) if (res == NULL)
return -1; return -1;
@ -917,7 +917,7 @@ _textiowrapper_set_encoder(textio *self, PyObject *codec_info,
PyObject *res; PyObject *res;
int r; int r;
res = _PyObject_CallMethodId(self->buffer, &PyId_writable, NULL); res = _PyObject_CallMethodIdNoArgs(self->buffer, &PyId_writable);
if (res == NULL) if (res == NULL)
return -1; return -1;
@ -963,8 +963,8 @@ _textiowrapper_fix_encoder_state(textio *self)
self->encoding_start_of_stream = 1; self->encoding_start_of_stream = 1;
PyObject *cookieObj = PyObject_CallMethodObjArgs( PyObject *cookieObj = _PyObject_CallMethodNoArgs(
self->buffer, _PyIO_str_tell, NULL); self->buffer, _PyIO_str_tell);
if (cookieObj == NULL) { if (cookieObj == NULL) {
return -1; return -1;
} }
@ -1126,7 +1126,7 @@ _io_TextIOWrapper___init___impl(textio *self, PyObject *buffer,
state = IO_STATE(); state = IO_STATE();
if (state == NULL) if (state == NULL)
goto error; goto error;
fileno = _PyObject_CallMethodId(buffer, &PyId_fileno, NULL); fileno = _PyObject_CallMethodIdNoArgs(buffer, &PyId_fileno);
/* Ignore only AttributeError and UnsupportedOperation */ /* Ignore only AttributeError and UnsupportedOperation */
if (fileno == NULL) { if (fileno == NULL) {
if (PyErr_ExceptionMatches(PyExc_AttributeError) || if (PyErr_ExceptionMatches(PyExc_AttributeError) ||
@ -1241,7 +1241,7 @@ _io_TextIOWrapper___init___impl(textio *self, PyObject *buffer,
} }
} }
res = _PyObject_CallMethodId(buffer, &PyId_seekable, NULL); res = _PyObject_CallMethodIdNoArgs(buffer, &PyId_seekable);
if (res == NULL) if (res == NULL)
goto error; goto error;
r = PyObject_IsTrue(res); r = PyObject_IsTrue(res);
@ -1386,7 +1386,7 @@ _io_TextIOWrapper_reconfigure_impl(textio *self, PyObject *encoding,
return NULL; return NULL;
} }
PyObject *res = PyObject_CallMethodObjArgs((PyObject *)self, _PyIO_str_flush, NULL); PyObject *res = _PyObject_CallMethodNoArgs((PyObject *)self, _PyIO_str_flush);
if (res == NULL) { if (res == NULL) {
return NULL; return NULL;
} }
@ -1525,7 +1525,7 @@ _io_TextIOWrapper_detach_impl(textio *self)
{ {
PyObject *buffer, *res; PyObject *buffer, *res;
CHECK_ATTACHED(self); CHECK_ATTACHED(self);
res = PyObject_CallMethodObjArgs((PyObject *)self, _PyIO_str_flush, NULL); res = _PyObject_CallMethodNoArgs((PyObject *)self, _PyIO_str_flush);
if (res == NULL) if (res == NULL)
return NULL; return NULL;
Py_DECREF(res); Py_DECREF(res);
@ -1720,7 +1720,7 @@ _io_TextIOWrapper_write_impl(textio *self, PyObject *text)
} }
if (needflush) { if (needflush) {
ret = PyObject_CallMethodObjArgs(self->buffer, _PyIO_str_flush, NULL); ret = _PyObject_CallMethodNoArgs(self->buffer, _PyIO_str_flush);
if (ret == NULL) if (ret == NULL)
return NULL; return NULL;
Py_DECREF(ret); Py_DECREF(ret);
@ -1730,7 +1730,7 @@ _io_TextIOWrapper_write_impl(textio *self, PyObject *text)
Py_CLEAR(self->snapshot); Py_CLEAR(self->snapshot);
if (self->decoder) { if (self->decoder) {
ret = _PyObject_CallMethodId(self->decoder, &PyId_reset, NULL); ret = _PyObject_CallMethodIdNoArgs(self->decoder, &PyId_reset);
if (ret == NULL) if (ret == NULL)
return NULL; return NULL;
Py_DECREF(ret); Py_DECREF(ret);
@ -1810,9 +1810,8 @@ textiowrapper_read_chunk(textio *self, Py_ssize_t size_hint)
/* To prepare for tell(), we need to snapshot a point in the file /* To prepare for tell(), we need to snapshot a point in the file
* where the decoder's input buffer is empty. * where the decoder's input buffer is empty.
*/ */
PyObject *state = _PyObject_CallMethodNoArgs(self->decoder,
PyObject *state = PyObject_CallMethodObjArgs(self->decoder, _PyIO_str_getstate);
_PyIO_str_getstate, NULL);
if (state == NULL) if (state == NULL)
return -1; return -1;
/* Given this, we know there was a valid snapshot point /* Given this, we know there was a valid snapshot point
@ -1935,7 +1934,7 @@ _io_TextIOWrapper_read_impl(textio *self, Py_ssize_t n)
if (n < 0) { if (n < 0) {
/* Read everything */ /* Read everything */
PyObject *bytes = _PyObject_CallMethodId(self->buffer, &PyId_read, NULL); PyObject *bytes = _PyObject_CallMethodIdNoArgs(self->buffer, &PyId_read);
PyObject *decoded; PyObject *decoded;
if (bytes == NULL) if (bytes == NULL)
goto fail; goto fail;
@ -2396,7 +2395,7 @@ _textiowrapper_decoder_setstate(textio *self, cookie_type *cookie)
utf-16, that we are expecting a BOM). utf-16, that we are expecting a BOM).
*/ */
if (cookie->start_pos == 0 && cookie->dec_flags == 0) if (cookie->start_pos == 0 && cookie->dec_flags == 0)
res = PyObject_CallMethodObjArgs(self->decoder, _PyIO_str_reset, NULL); res = _PyObject_CallMethodNoArgs(self->decoder, _PyIO_str_reset);
else else
res = _PyObject_CallMethodId(self->decoder, &PyId_setstate, res = _PyObject_CallMethodId(self->decoder, &PyId_setstate,
"((yi))", "", cookie->dec_flags); "((yi))", "", cookie->dec_flags);
@ -2411,7 +2410,7 @@ _textiowrapper_encoder_reset(textio *self, int start_of_stream)
{ {
PyObject *res; PyObject *res;
if (start_of_stream) { if (start_of_stream) {
res = PyObject_CallMethodObjArgs(self->encoder, _PyIO_str_reset, NULL); res = _PyObject_CallMethodNoArgs(self->encoder, _PyIO_str_reset);
self->encoding_start_of_stream = 1; self->encoding_start_of_stream = 1;
} }
else { else {
@ -2476,7 +2475,7 @@ _io_TextIOWrapper_seek_impl(textio *self, PyObject *cookieObj, int whence)
* sync the underlying buffer with the current position. * sync the underlying buffer with the current position.
*/ */
Py_DECREF(cookieObj); Py_DECREF(cookieObj);
cookieObj = _PyObject_CallMethodId((PyObject *)self, &PyId_tell, NULL); cookieObj = _PyObject_CallMethodIdNoArgs((PyObject *)self, &PyId_tell);
if (cookieObj == NULL) if (cookieObj == NULL)
goto fail; goto fail;
break; break;
@ -2492,7 +2491,7 @@ _io_TextIOWrapper_seek_impl(textio *self, PyObject *cookieObj, int whence)
goto fail; goto fail;
} }
res = _PyObject_CallMethodId((PyObject *)self, &PyId_flush, NULL); res = _PyObject_CallMethodIdNoArgs((PyObject *)self, &PyId_flush);
if (res == NULL) if (res == NULL)
goto fail; goto fail;
Py_DECREF(res); Py_DECREF(res);
@ -2500,7 +2499,7 @@ _io_TextIOWrapper_seek_impl(textio *self, PyObject *cookieObj, int whence)
textiowrapper_set_decoded_chars(self, NULL); textiowrapper_set_decoded_chars(self, NULL);
Py_CLEAR(self->snapshot); Py_CLEAR(self->snapshot);
if (self->decoder) { if (self->decoder) {
res = _PyObject_CallMethodId(self->decoder, &PyId_reset, NULL); res = _PyObject_CallMethodIdNoArgs(self->decoder, &PyId_reset);
if (res == NULL) if (res == NULL)
goto fail; goto fail;
Py_DECREF(res); Py_DECREF(res);
@ -2540,7 +2539,7 @@ _io_TextIOWrapper_seek_impl(textio *self, PyObject *cookieObj, int whence)
goto fail; goto fail;
} }
res = PyObject_CallMethodObjArgs((PyObject *)self, _PyIO_str_flush, NULL); res = _PyObject_CallMethodNoArgs((PyObject *)self, _PyIO_str_flush);
if (res == NULL) if (res == NULL)
goto fail; goto fail;
Py_DECREF(res); Py_DECREF(res);
@ -2663,12 +2662,12 @@ _io_TextIOWrapper_tell_impl(textio *self)
if (_textiowrapper_writeflush(self) < 0) if (_textiowrapper_writeflush(self) < 0)
return NULL; return NULL;
res = _PyObject_CallMethodId((PyObject *)self, &PyId_flush, NULL); res = _PyObject_CallMethodIdNoArgs((PyObject *)self, &PyId_flush);
if (res == NULL) if (res == NULL)
goto fail; goto fail;
Py_DECREF(res); Py_DECREF(res);
posobj = _PyObject_CallMethodId(self->buffer, &PyId_tell, NULL); posobj = _PyObject_CallMethodIdNoArgs(self->buffer, &PyId_tell);
if (posobj == NULL) if (posobj == NULL)
goto fail; goto fail;
@ -2704,15 +2703,15 @@ _io_TextIOWrapper_tell_impl(textio *self)
chars_to_skip = self->decoded_chars_used; chars_to_skip = self->decoded_chars_used;
/* Decoder state will be restored at the end */ /* Decoder state will be restored at the end */
saved_state = PyObject_CallMethodObjArgs(self->decoder, saved_state = _PyObject_CallMethodNoArgs(self->decoder,
_PyIO_str_getstate, NULL); _PyIO_str_getstate);
if (saved_state == NULL) if (saved_state == NULL)
goto fail; goto fail;
#define DECODER_GETSTATE() do { \ #define DECODER_GETSTATE() do { \
PyObject *dec_buffer; \ PyObject *dec_buffer; \
PyObject *_state = PyObject_CallMethodObjArgs(self->decoder, \ PyObject *_state = _PyObject_CallMethodNoArgs(self->decoder, \
_PyIO_str_getstate, NULL); \ _PyIO_str_getstate); \
if (_state == NULL) \ if (_state == NULL) \
goto fail; \ goto fail; \
if (!PyTuple_Check(_state)) { \ if (!PyTuple_Check(_state)) { \
@ -2874,7 +2873,7 @@ _io_TextIOWrapper_truncate_impl(textio *self, PyObject *pos)
CHECK_ATTACHED(self) CHECK_ATTACHED(self)
res = PyObject_CallMethodObjArgs((PyObject *) self, _PyIO_str_flush, NULL); res = _PyObject_CallMethodNoArgs((PyObject *)self, _PyIO_str_flush);
if (res == NULL) if (res == NULL)
return NULL; return NULL;
Py_DECREF(res); Py_DECREF(res);
@ -2963,7 +2962,7 @@ _io_TextIOWrapper_fileno_impl(textio *self)
/*[clinic end generated code: output=21490a4c3da13e6c input=c488ca83d0069f9b]*/ /*[clinic end generated code: output=21490a4c3da13e6c input=c488ca83d0069f9b]*/
{ {
CHECK_ATTACHED(self); CHECK_ATTACHED(self);
return _PyObject_CallMethodId(self->buffer, &PyId_fileno, NULL); return _PyObject_CallMethodIdNoArgs(self->buffer, &PyId_fileno);
} }
/*[clinic input] /*[clinic input]
@ -2975,7 +2974,7 @@ _io_TextIOWrapper_seekable_impl(textio *self)
/*[clinic end generated code: output=ab223dbbcffc0f00 input=8b005ca06e1fca13]*/ /*[clinic end generated code: output=ab223dbbcffc0f00 input=8b005ca06e1fca13]*/
{ {
CHECK_ATTACHED(self); CHECK_ATTACHED(self);
return _PyObject_CallMethodId(self->buffer, &PyId_seekable, NULL); return _PyObject_CallMethodIdNoArgs(self->buffer, &PyId_seekable);
} }
/*[clinic input] /*[clinic input]
@ -2987,7 +2986,7 @@ _io_TextIOWrapper_readable_impl(textio *self)
/*[clinic end generated code: output=72ff7ba289a8a91b input=0704ea7e01b0d3eb]*/ /*[clinic end generated code: output=72ff7ba289a8a91b input=0704ea7e01b0d3eb]*/
{ {
CHECK_ATTACHED(self); CHECK_ATTACHED(self);
return _PyObject_CallMethodId(self->buffer, &PyId_readable, NULL); return _PyObject_CallMethodIdNoArgs(self->buffer, &PyId_readable);
} }
/*[clinic input] /*[clinic input]
@ -2999,7 +2998,7 @@ _io_TextIOWrapper_writable_impl(textio *self)
/*[clinic end generated code: output=a728c71790d03200 input=c41740bc9d8636e8]*/ /*[clinic end generated code: output=a728c71790d03200 input=c41740bc9d8636e8]*/
{ {
CHECK_ATTACHED(self); CHECK_ATTACHED(self);
return _PyObject_CallMethodId(self->buffer, &PyId_writable, NULL); return _PyObject_CallMethodIdNoArgs(self->buffer, &PyId_writable);
} }
/*[clinic input] /*[clinic input]
@ -3011,7 +3010,7 @@ _io_TextIOWrapper_isatty_impl(textio *self)
/*[clinic end generated code: output=12be1a35bace882e input=fb68d9f2c99bbfff]*/ /*[clinic end generated code: output=12be1a35bace882e input=fb68d9f2c99bbfff]*/
{ {
CHECK_ATTACHED(self); CHECK_ATTACHED(self);
return _PyObject_CallMethodId(self->buffer, &PyId_isatty, NULL); return _PyObject_CallMethodIdNoArgs(self->buffer, &PyId_isatty);
} }
/*[clinic input] /*[clinic input]
@ -3027,7 +3026,7 @@ _io_TextIOWrapper_flush_impl(textio *self)
self->telling = self->seekable; self->telling = self->seekable;
if (_textiowrapper_writeflush(self) < 0) if (_textiowrapper_writeflush(self) < 0)
return NULL; return NULL;
return _PyObject_CallMethodId(self->buffer, &PyId_flush, NULL); return _PyObject_CallMethodIdNoArgs(self->buffer, &PyId_flush);
} }
/*[clinic input] /*[clinic input]
@ -3064,13 +3063,13 @@ _io_TextIOWrapper_close_impl(textio *self)
else else
PyErr_Clear(); PyErr_Clear();
} }
res = _PyObject_CallMethodId((PyObject *)self, &PyId_flush, NULL); res = _PyObject_CallMethodIdNoArgs((PyObject *)self, &PyId_flush);
if (res == NULL) if (res == NULL)
PyErr_Fetch(&exc, &val, &tb); PyErr_Fetch(&exc, &val, &tb);
else else
Py_DECREF(res); Py_DECREF(res);
res = _PyObject_CallMethodId(self->buffer, &PyId_close, NULL); res = _PyObject_CallMethodIdNoArgs(self->buffer, &PyId_close);
if (exc != NULL) { if (exc != NULL) {
_PyErr_ChainExceptions(exc, val, tb); _PyErr_ChainExceptions(exc, val, tb);
Py_CLEAR(res); Py_CLEAR(res);
@ -3092,8 +3091,8 @@ textiowrapper_iternext(textio *self)
line = _textiowrapper_readline(self, -1); line = _textiowrapper_readline(self, -1);
} }
else { else {
line = PyObject_CallMethodObjArgs((PyObject *)self, line = _PyObject_CallMethodNoArgs((PyObject *)self,
_PyIO_str_readline, NULL); _PyIO_str_readline);
if (line && !PyUnicode_Check(line)) { if (line && !PyUnicode_Check(line)) {
PyErr_Format(PyExc_OSError, PyErr_Format(PyExc_OSError,
"readline() should have returned a str object, " "readline() should have returned a str object, "

View File

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

View File

@ -60,7 +60,7 @@ _enable_gc(int need_to_reenable_gc, PyObject *gc_module)
if (need_to_reenable_gc) { if (need_to_reenable_gc) {
PyErr_Fetch(&exctype, &val, &tb); PyErr_Fetch(&exctype, &val, &tb);
result = _PyObject_CallMethodId(gc_module, &PyId_enable, NULL); result = _PyObject_CallMethodIdNoArgs(gc_module, &PyId_enable);
if (exctype != NULL) { if (exctype != NULL) {
PyErr_Restore(exctype, val, tb); PyErr_Restore(exctype, val, tb);
} }
@ -606,7 +606,7 @@ subprocess_fork_exec(PyObject* self, PyObject *args)
gc_module = PyImport_ImportModule("gc"); gc_module = PyImport_ImportModule("gc");
if (gc_module == NULL) if (gc_module == NULL)
return NULL; return NULL;
result = _PyObject_CallMethodId(gc_module, &PyId_isenabled, NULL); result = _PyObject_CallMethodIdNoArgs(gc_module, &PyId_isenabled);
if (result == NULL) { if (result == NULL) {
Py_DECREF(gc_module); Py_DECREF(gc_module);
return NULL; return NULL;
@ -617,7 +617,7 @@ subprocess_fork_exec(PyObject* self, PyObject *args)
Py_DECREF(gc_module); Py_DECREF(gc_module);
return NULL; return NULL;
} }
result = _PyObject_CallMethodId(gc_module, &PyId_disable, NULL); result = _PyObject_CallMethodIdNoArgs(gc_module, &PyId_disable);
if (result == NULL) { if (result == NULL) {
Py_DECREF(gc_module); Py_DECREF(gc_module);
return NULL; return NULL;

View File

@ -713,7 +713,7 @@ void _pysqlite_final_callback(sqlite3_context* context)
PyErr_Fetch(&exception, &value, &tb); PyErr_Fetch(&exception, &value, &tb);
restore = 1; restore = 1;
function_result = _PyObject_CallMethodId(*aggregate_instance, &PyId_finalize, NULL); function_result = _PyObject_CallMethodIdNoArgs(*aggregate_instance, &PyId_finalize);
Py_DECREF(*aggregate_instance); Py_DECREF(*aggregate_instance);
@ -1275,7 +1275,7 @@ PyObject* pysqlite_connection_execute(pysqlite_Connection* self, PyObject* args)
PyObject* result = 0; PyObject* result = 0;
PyObject* method = 0; PyObject* method = 0;
cursor = _PyObject_CallMethodId((PyObject*)self, &PyId_cursor, NULL); cursor = _PyObject_CallMethodIdNoArgs((PyObject*)self, &PyId_cursor);
if (!cursor) { if (!cursor) {
goto error; goto error;
} }
@ -1304,7 +1304,7 @@ PyObject* pysqlite_connection_executemany(pysqlite_Connection* self, PyObject* a
PyObject* result = 0; PyObject* result = 0;
PyObject* method = 0; PyObject* method = 0;
cursor = _PyObject_CallMethodId((PyObject*)self, &PyId_cursor, NULL); cursor = _PyObject_CallMethodIdNoArgs((PyObject*)self, &PyId_cursor);
if (!cursor) { if (!cursor) {
goto error; goto error;
} }
@ -1333,7 +1333,7 @@ PyObject* pysqlite_connection_executescript(pysqlite_Connection* self, PyObject*
PyObject* result = 0; PyObject* result = 0;
PyObject* method = 0; PyObject* method = 0;
cursor = _PyObject_CallMethodId((PyObject*)self, &PyId_cursor, NULL); cursor = _PyObject_CallMethodIdNoArgs((PyObject*)self, &PyId_cursor);
if (!cursor) { if (!cursor) {
goto error; goto error;
} }

View File

@ -106,7 +106,7 @@ _pysqlite_get_converter(const char *keystr, Py_ssize_t keylen)
if (!key) { if (!key) {
return NULL; return NULL;
} }
upcase_key = _PyObject_CallMethodId(key, &PyId_upper, NULL); upcase_key = _PyObject_CallMethodIdNoArgs(key, &PyId_upper);
Py_DECREF(key); Py_DECREF(key);
if (!upcase_key) { if (!upcase_key) {
return NULL; return NULL;

View File

@ -203,7 +203,7 @@ static PyObject* module_register_converter(PyObject* self, PyObject* args)
} }
/* convert the name to upper case */ /* convert the name to upper case */
name = _PyObject_CallMethodId(orig_name, &PyId_upper, NULL); name = _PyObject_CallMethodIdNoArgs(orig_name, &PyId_upper);
if (!name) { if (!name) {
goto error; goto error;
} }

View File

@ -1358,7 +1358,7 @@ thread_excepthook_file(PyObject *file, PyObject *exc_type, PyObject *exc_value,
_PyErr_Display(file, exc_type, exc_value, exc_traceback); _PyErr_Display(file, exc_type, exc_value, exc_traceback);
/* Call file.flush() */ /* Call file.flush() */
PyObject *res = _PyObject_CallMethodId(file, &PyId_flush, NULL); PyObject *res = _PyObject_CallMethodIdNoArgs(file, &PyId_flush);
if (!res) { if (!res) {
return -1; return -1;
} }

View File

@ -172,7 +172,7 @@ faulthandler_get_fileno(PyObject **file_ptr)
return fd; return fd;
} }
result = _PyObject_CallMethodId(file, &PyId_fileno, NULL); result = _PyObject_CallMethodIdNoArgs(file, &PyId_fileno);
if (result == NULL) if (result == NULL)
return -1; return -1;
@ -190,7 +190,7 @@ faulthandler_get_fileno(PyObject **file_ptr)
return -1; return -1;
} }
result = _PyObject_CallMethodId(file, &PyId_flush, NULL); result = _PyObject_CallMethodIdNoArgs(file, &PyId_flush);
if (result != NULL) if (result != NULL)
Py_DECREF(result); Py_DECREF(result);
else { else {
@ -1305,7 +1305,7 @@ faulthandler_init_enable(void)
return -1; return -1;
} }
PyObject *res = _PyObject_CallMethodId(module, &PyId_enable, NULL); PyObject *res = _PyObject_CallMethodIdNoArgs(module, &PyId_enable);
Py_DECREF(module); Py_DECREF(module);
if (res == NULL) { if (res == NULL) {
return -1; return -1;

View File

@ -692,7 +692,7 @@ mmap__exit__method(PyObject *self, PyObject *args)
{ {
_Py_IDENTIFIER(close); _Py_IDENTIFIER(close);
return _PyObject_CallMethodId(self, &PyId_close, NULL); return _PyObject_CallMethodIdNoArgs(self, &PyId_close);
} }
#ifdef MS_WINDOWS #ifdef MS_WINDOWS

View File

@ -539,7 +539,7 @@ oss_exit(PyObject *self, PyObject *unused)
{ {
_Py_IDENTIFIER(close); _Py_IDENTIFIER(close);
PyObject *ret = _PyObject_CallMethodId(self, &PyId_close, NULL); PyObject *ret = _PyObject_CallMethodIdNoArgs(self, &PyId_close);
if (!ret) if (!ret)
return NULL; return NULL;
Py_DECREF(ret); Py_DECREF(ret);

View File

@ -1634,7 +1634,7 @@ select_epoll___exit___impl(pyEpoll_Object *self, PyObject *exc_type,
{ {
_Py_IDENTIFIER(close); _Py_IDENTIFIER(close);
return _PyObject_CallMethodId((PyObject *)self, &PyId_close, NULL); return _PyObject_CallMethodIdNoArgs((PyObject *)self, &PyId_close);
} }
static PyGetSetDef pyepoll_getsetlist[] = { static PyGetSetDef pyepoll_getsetlist[] = {

View File

@ -2221,7 +2221,7 @@ method_output_as_list(PyObject *o, _Py_Identifier *meth_id)
PyObject *it, *result, *meth_output; PyObject *it, *result, *meth_output;
assert(o != NULL); assert(o != NULL);
meth_output = _PyObject_CallMethodId(o, meth_id, NULL); meth_output = _PyObject_CallMethodIdNoArgs(o, meth_id);
if (meth_output == NULL || PyList_CheckExact(meth_output)) { if (meth_output == NULL || PyList_CheckExact(meth_output)) {
return meth_output; return meth_output;
} }

View File

@ -1019,28 +1019,28 @@ static PyObject *
mappingproxy_keys(mappingproxyobject *pp, PyObject *Py_UNUSED(ignored)) mappingproxy_keys(mappingproxyobject *pp, PyObject *Py_UNUSED(ignored))
{ {
_Py_IDENTIFIER(keys); _Py_IDENTIFIER(keys);
return _PyObject_CallMethodId(pp->mapping, &PyId_keys, NULL); return _PyObject_CallMethodIdNoArgs(pp->mapping, &PyId_keys);
} }
static PyObject * static PyObject *
mappingproxy_values(mappingproxyobject *pp, PyObject *Py_UNUSED(ignored)) mappingproxy_values(mappingproxyobject *pp, PyObject *Py_UNUSED(ignored))
{ {
_Py_IDENTIFIER(values); _Py_IDENTIFIER(values);
return _PyObject_CallMethodId(pp->mapping, &PyId_values, NULL); return _PyObject_CallMethodIdNoArgs(pp->mapping, &PyId_values);
} }
static PyObject * static PyObject *
mappingproxy_items(mappingproxyobject *pp, PyObject *Py_UNUSED(ignored)) mappingproxy_items(mappingproxyobject *pp, PyObject *Py_UNUSED(ignored))
{ {
_Py_IDENTIFIER(items); _Py_IDENTIFIER(items);
return _PyObject_CallMethodId(pp->mapping, &PyId_items, NULL); return _PyObject_CallMethodIdNoArgs(pp->mapping, &PyId_items);
} }
static PyObject * static PyObject *
mappingproxy_copy(mappingproxyobject *pp, PyObject *Py_UNUSED(ignored)) mappingproxy_copy(mappingproxyobject *pp, PyObject *Py_UNUSED(ignored))
{ {
_Py_IDENTIFIER(copy); _Py_IDENTIFIER(copy);
return _PyObject_CallMethodId(pp->mapping, &PyId_copy, NULL); return _PyObject_CallMethodIdNoArgs(pp->mapping, &PyId_copy);
} }
/* WARNING: mappingproxy methods must not give access /* WARNING: mappingproxy methods must not give access

View File

@ -61,7 +61,7 @@ PyFile_GetLine(PyObject *f, int n)
} }
if (n <= 0) { if (n <= 0) {
result = _PyObject_CallMethodIdObjArgs(f, &PyId_readline, NULL); result = _PyObject_CallMethodIdNoArgs(f, &PyId_readline);
} }
else { else {
result = _PyObject_CallMethodId(f, &PyId_readline, "i", n); result = _PyObject_CallMethodId(f, &PyId_readline, "i", n);

View File

@ -920,7 +920,7 @@ odict_reduce(register PyODictObject *od, PyObject *Py_UNUSED(ignored))
if (args == NULL) if (args == NULL)
goto Done; goto Done;
items = _PyObject_CallMethodIdObjArgs((PyObject *)od, &PyId_items, NULL); items = _PyObject_CallMethodIdNoArgs((PyObject *)od, &PyId_items);
if (items == NULL) if (items == NULL)
goto Done; goto Done;
@ -1421,8 +1421,8 @@ odict_repr(PyODictObject *self)
Py_SIZE(pieces) = count; Py_SIZE(pieces) = count;
} }
else { else {
PyObject *items = _PyObject_CallMethodIdObjArgs((PyObject *)self, PyObject *items = _PyObject_CallMethodIdNoArgs((PyObject *)self,
&PyId_items, NULL); &PyId_items);
if (items == NULL) if (items == NULL)
goto Done; goto Done;
pieces = PySequence_List(items); pieces = PySequence_List(items);

View File

@ -4425,7 +4425,7 @@ _PyObject_GetItemsIter(PyObject *obj, PyObject **listitems,
PyObject *items; PyObject *items;
_Py_IDENTIFIER(items); _Py_IDENTIFIER(items);
items = _PyObject_CallMethodIdObjArgs(obj, &PyId_items, NULL); items = _PyObject_CallMethodIdNoArgs(obj, &PyId_items);
if (items == NULL) { if (items == NULL) {
Py_CLEAR(*listitems); Py_CLEAR(*listitems);
return -1; return -1;

View File

@ -455,7 +455,7 @@ proxy_checkref(PyWeakReference *proxy)
method(PyObject *proxy, PyObject *Py_UNUSED(ignored)) { \ method(PyObject *proxy, PyObject *Py_UNUSED(ignored)) { \
_Py_IDENTIFIER(special); \ _Py_IDENTIFIER(special); \
UNWRAP(proxy); \ UNWRAP(proxy); \
return _PyObject_CallMethodId(proxy, &PyId_##special, NULL); \ return _PyObject_CallMethodIdNoArgs(proxy, &PyId_##special); \
} }

View File

@ -1889,7 +1889,7 @@ builtin_print(PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject
if (do_flush == -1) if (do_flush == -1)
return NULL; return NULL;
else if (do_flush) { else if (do_flush) {
tmp = _PyObject_CallMethodId(file, &PyId_flush, NULL); tmp = _PyObject_CallMethodIdNoArgs(file, &PyId_flush);
if (tmp == NULL) if (tmp == NULL)
return NULL; return NULL;
else else
@ -1959,7 +1959,7 @@ builtin_input_impl(PyObject *module, PyObject *prompt)
} }
/* First of all, flush stderr */ /* First of all, flush stderr */
tmp = _PyObject_CallMethodId(ferr, &PyId_flush, NULL); tmp = _PyObject_CallMethodIdNoArgs(ferr, &PyId_flush);
if (tmp == NULL) if (tmp == NULL)
PyErr_Clear(); PyErr_Clear();
else else
@ -1968,7 +1968,7 @@ builtin_input_impl(PyObject *module, PyObject *prompt)
/* We should only use (GNU) readline if Python's sys.stdin and /* We should only use (GNU) readline if Python's sys.stdin and
sys.stdout are the same as C's stdin and stdout, because we sys.stdout are the same as C's stdin and stdout, because we
need to pass it those. */ need to pass it those. */
tmp = _PyObject_CallMethodId(fin, &PyId_fileno, NULL); tmp = _PyObject_CallMethodIdNoArgs(fin, &PyId_fileno);
if (tmp == NULL) { if (tmp == NULL) {
PyErr_Clear(); PyErr_Clear();
tty = 0; tty = 0;
@ -1981,7 +1981,7 @@ builtin_input_impl(PyObject *module, PyObject *prompt)
tty = fd == fileno(stdin) && isatty(fd); tty = fd == fileno(stdin) && isatty(fd);
} }
if (tty) { if (tty) {
tmp = _PyObject_CallMethodId(fout, &PyId_fileno, NULL); tmp = _PyObject_CallMethodIdNoArgs(fout, &PyId_fileno);
if (tmp == NULL) { if (tmp == NULL) {
PyErr_Clear(); PyErr_Clear();
tty = 0; tty = 0;
@ -2019,7 +2019,7 @@ builtin_input_impl(PyObject *module, PyObject *prompt)
stdin_errors_str = PyUnicode_AsUTF8(stdin_errors); stdin_errors_str = PyUnicode_AsUTF8(stdin_errors);
if (!stdin_encoding_str || !stdin_errors_str) if (!stdin_encoding_str || !stdin_errors_str)
goto _readline_errors; goto _readline_errors;
tmp = _PyObject_CallMethodId(fout, &PyId_flush, NULL); tmp = _PyObject_CallMethodIdNoArgs(fout, &PyId_flush);
if (tmp == NULL) if (tmp == NULL)
PyErr_Clear(); PyErr_Clear();
else else
@ -2114,7 +2114,7 @@ builtin_input_impl(PyObject *module, PyObject *prompt)
if (PyFile_WriteObject(prompt, fout, Py_PRINT_RAW) != 0) if (PyFile_WriteObject(prompt, fout, Py_PRINT_RAW) != 0)
return NULL; return NULL;
} }
tmp = _PyObject_CallMethodId(fout, &PyId_flush, NULL); tmp = _PyObject_CallMethodIdNoArgs(fout, &PyId_flush);
if (tmp == NULL) if (tmp == NULL)
PyErr_Clear(); PyErr_Clear();
else else

View File

@ -1263,7 +1263,7 @@ write_unraisable_exc_file(PyThreadState *tstate, PyObject *exc_type,
} }
/* Explicitly call file.flush() */ /* Explicitly call file.flush() */
PyObject *res = _PyObject_CallMethodId(file, &PyId_flush, NULL); PyObject *res = _PyObject_CallMethodIdNoArgs(file, &PyId_flush);
if (!res) { if (!res) {
return -1; return -1;
} }

View File

@ -539,7 +539,7 @@ _PyImport_Cleanup(PyThreadState *tstate)
} }
else { else {
_Py_IDENTIFIER(clear); _Py_IDENTIFIER(clear);
if (_PyObject_CallMethodId(modules, &PyId_clear, "") == NULL) { if (_PyObject_CallMethodIdNoArgs(modules, &PyId_clear) == NULL) {
PyErr_WriteUnraisable(NULL); PyErr_WriteUnraisable(NULL);
} }
} }

View File

@ -1106,7 +1106,7 @@ flush_std_files(void)
int status = 0; int status = 0;
if (fout != NULL && fout != Py_None && !file_is_closed(fout)) { if (fout != NULL && fout != Py_None && !file_is_closed(fout)) {
tmp = _PyObject_CallMethodId(fout, &PyId_flush, NULL); tmp = _PyObject_CallMethodIdNoArgs(fout, &PyId_flush);
if (tmp == NULL) { if (tmp == NULL) {
PyErr_WriteUnraisable(fout); PyErr_WriteUnraisable(fout);
status = -1; status = -1;
@ -1116,7 +1116,7 @@ flush_std_files(void)
} }
if (ferr != NULL && ferr != Py_None && !file_is_closed(ferr)) { if (ferr != NULL && ferr != Py_None && !file_is_closed(ferr)) {
tmp = _PyObject_CallMethodId(ferr, &PyId_flush, NULL); tmp = _PyObject_CallMethodIdNoArgs(ferr, &PyId_flush);
if (tmp == NULL) { if (tmp == NULL) {
PyErr_Clear(); PyErr_Clear();
status = -1; status = -1;
@ -1762,7 +1762,7 @@ create_stdio(const PyConfig *config, PyObject* io,
text = PyUnicode_FromString(name); text = PyUnicode_FromString(name);
if (text == NULL || _PyObject_SetAttrId(raw, &PyId_name, text) < 0) if (text == NULL || _PyObject_SetAttrId(raw, &PyId_name, text) < 0)
goto error; goto error;
res = _PyObject_CallMethodId(raw, &PyId_isatty, NULL); res = _PyObject_CallMethodIdNoArgs(raw, &PyId_isatty);
if (res == NULL) if (res == NULL)
goto error; goto error;
isatty = PyObject_IsTrue(res); isatty = PyObject_IsTrue(res);
@ -2026,7 +2026,7 @@ _Py_FatalError_PrintExc(int fd)
Py_XDECREF(tb); Py_XDECREF(tb);
/* sys.stderr may be buffered: call sys.stderr.flush() */ /* sys.stderr may be buffered: call sys.stderr.flush() */
res = _PyObject_CallMethodId(ferr, &PyId_flush, NULL); res = _PyObject_CallMethodIdNoArgs(ferr, &PyId_flush);
if (res == NULL) { if (res == NULL) {
_PyErr_Clear(tstate); _PyErr_Clear(tstate);
} }
@ -2220,7 +2220,7 @@ wait_for_thread_shutdown(PyThreadState *tstate)
/* else: threading not imported */ /* else: threading not imported */
return; return;
} }
result = _PyObject_CallMethodId(threading, &PyId__shutdown, NULL); result = _PyObject_CallMethodIdNoArgs(threading, &PyId__shutdown);
if (result == NULL) { if (result == NULL) {
PyErr_WriteUnraisable(threading); PyErr_WriteUnraisable(threading);
} }

View File

@ -978,7 +978,7 @@ _PyErr_Display(PyObject *file, PyObject *exception, PyObject *value, PyObject *t
Py_XDECREF(seen); Py_XDECREF(seen);
/* Call file.flush() */ /* Call file.flush() */
PyObject *res = _PyObject_CallMethodId(file, &PyId_flush, NULL); PyObject *res = _PyObject_CallMethodIdNoArgs(file, &PyId_flush);
if (!res) { if (!res) {
/* Silently ignore file.flush() error */ /* Silently ignore file.flush() error */
PyErr_Clear(); PyErr_Clear();
@ -1072,7 +1072,7 @@ flush_io(void)
f = _PySys_GetObjectId(&PyId_stderr); f = _PySys_GetObjectId(&PyId_stderr);
if (f != NULL) { if (f != NULL) {
r = _PyObject_CallMethodId(f, &PyId_flush, NULL); r = _PyObject_CallMethodIdNoArgs(f, &PyId_flush);
if (r) if (r)
Py_DECREF(r); Py_DECREF(r);
else else
@ -1080,7 +1080,7 @@ flush_io(void)
} }
f = _PySys_GetObjectId(&PyId_stdout); f = _PySys_GetObjectId(&PyId_stdout);
if (f != NULL) { if (f != NULL) {
r = _PyObject_CallMethodId(f, &PyId_flush, NULL); r = _PyObject_CallMethodIdNoArgs(f, &PyId_flush);
if (r) if (r)
Py_DECREF(r); Py_DECREF(r);
else else

View File

@ -430,7 +430,7 @@ _Py_DisplaySourceLine(PyObject *f, PyObject *filename, int lineno, int indent)
if (fob == NULL) { if (fob == NULL) {
PyErr_Clear(); PyErr_Clear();
res = _PyObject_CallMethodId(binary, &PyId_close, NULL); res = _PyObject_CallMethodIdNoArgs(binary, &PyId_close);
Py_DECREF(binary); Py_DECREF(binary);
if (res) if (res)
Py_DECREF(res); Py_DECREF(res);
@ -450,7 +450,7 @@ _Py_DisplaySourceLine(PyObject *f, PyObject *filename, int lineno, int indent)
break; break;
} }
} }
res = _PyObject_CallMethodId(fob, &PyId_close, NULL); res = _PyObject_CallMethodIdNoArgs(fob, &PyId_close);
if (res) if (res)
Py_DECREF(res); Py_DECREF(res);
else else