summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2016-12-09 14:39:28 (GMT)
committerVictor Stinner <victor.stinner@gmail.com>2016-12-09 14:39:28 (GMT)
commit61bdb0d31924ec5fd12aa8dbe197002c57dfbf82 (patch)
tree8b2b7b6564c1997cea13060a769ddc56240f45c0
parent20401deae219ed38e8a7e9f960ef3b0dc3850dce (diff)
downloadcpython-61bdb0d31924ec5fd12aa8dbe197002c57dfbf82.zip
cpython-61bdb0d31924ec5fd12aa8dbe197002c57dfbf82.tar.gz
cpython-61bdb0d31924ec5fd12aa8dbe197002c57dfbf82.tar.bz2
Use _PyObject_CallMethodIdObjArgs() in _io
Issue #28915: Replace _PyObject_CallMethodId() with _PyObject_CallMethodIdObjArgs() when the format string was only made of "O" formats, PyObject* arguments. _PyObject_CallMethodIdObjArgs() avoids the creation of a temporary tuple and doesn't have to parse a format string.
-rw-r--r--Modules/_io/bufferedio.c3
-rw-r--r--Modules/_io/fileio.c4
-rw-r--r--Modules/_io/iobase.c3
-rw-r--r--Modules/_io/textio.c8
-rw-r--r--Modules/_io/winconsoleio.c6
5 files changed, 14 insertions, 10 deletions
diff --git a/Modules/_io/bufferedio.c b/Modules/_io/bufferedio.c
index 2b43fd8..cb4173e 100644
--- a/Modules/_io/bufferedio.c
+++ b/Modules/_io/bufferedio.c
@@ -454,7 +454,8 @@ buffered_dealloc_warn(buffered *self, PyObject *source)
{
if (self->ok && self->raw) {
PyObject *r;
- r = _PyObject_CallMethodId(self->raw, &PyId__dealloc_warn, "O", source);
+ r = _PyObject_CallMethodIdObjArgs(self->raw, &PyId__dealloc_warn,
+ source, NULL);
if (r)
Py_DECREF(r);
else
diff --git a/Modules/_io/fileio.c b/Modules/_io/fileio.c
index 54cfb7f..69e3518 100644
--- a/Modules/_io/fileio.c
+++ b/Modules/_io/fileio.c
@@ -150,8 +150,8 @@ _io_FileIO_close_impl(fileio *self)
PyObject *exc, *val, *tb;
int rc;
_Py_IDENTIFIER(close);
- res = _PyObject_CallMethodId((PyObject*)&PyRawIOBase_Type,
- &PyId_close, "O", self);
+ res = _PyObject_CallMethodIdObjArgs((PyObject*)&PyRawIOBase_Type,
+ &PyId_close, self, NULL);
if (!self->closefd) {
self->fd = -1;
return res;
diff --git a/Modules/_io/iobase.c b/Modules/_io/iobase.c
index 472ef3b..ee6ad47 100644
--- a/Modules/_io/iobase.c
+++ b/Modules/_io/iobase.c
@@ -661,7 +661,8 @@ _io__IOBase_readlines_impl(PyObject *self, Py_ssize_t hint)
to remove the bytecode interpretation overhead, but it could
probably be removed here. */
_Py_IDENTIFIER(extend);
- PyObject *ret = _PyObject_CallMethodId(result, &PyId_extend, "O", self);
+ PyObject *ret = _PyObject_CallMethodIdObjArgs(result, &PyId_extend,
+ self, NULL);
if (ret == NULL) {
Py_DECREF(result);
diff --git a/Modules/_io/textio.c b/Modules/_io/textio.c
index d28f613..0a6dfe1 100644
--- a/Modules/_io/textio.c
+++ b/Modules/_io/textio.c
@@ -899,8 +899,8 @@ _io_TextIOWrapper___init___impl(textio *self, PyObject *buffer,
PyObject *locale_module = _PyIO_get_locale_module(state);
if (locale_module == NULL)
goto catch_ImportError;
- self->encoding = _PyObject_CallMethodId(
- locale_module, &PyId_getpreferredencoding, "O", Py_False);
+ self->encoding = _PyObject_CallMethodIdObjArgs(
+ locale_module, &PyId_getpreferredencoding, Py_False, NULL);
Py_DECREF(locale_module);
if (self->encoding == NULL) {
catch_ImportError:
@@ -2644,7 +2644,9 @@ _io_TextIOWrapper_close_impl(textio *self)
else {
PyObject *exc = NULL, *val, *tb;
if (self->finalizing) {
- res = _PyObject_CallMethodId(self->buffer, &PyId__dealloc_warn, "O", self);
+ res = _PyObject_CallMethodIdObjArgs(self->buffer,
+ &PyId__dealloc_warn,
+ self, NULL);
if (res)
Py_DECREF(res);
else
diff --git a/Modules/_io/winconsoleio.c b/Modules/_io/winconsoleio.c
index 7b00a9e..d8e4339 100644
--- a/Modules/_io/winconsoleio.c
+++ b/Modules/_io/winconsoleio.c
@@ -85,7 +85,7 @@ char _PyIO_get_console_type(PyObject *path_or_fd) {
Py_CLEAR(decoded);
return '\0';
}
- decoded_upper = PyObject_CallMethod(decoded, "upper", "");
+ decoded_upper = PyObject_CallMethod(decoded, "upper", NULL);
Py_CLEAR(decoded);
if (!decoded_upper) {
PyErr_Clear();
@@ -181,8 +181,8 @@ _io__WindowsConsoleIO_close_impl(winconsoleio *self)
PyObject *exc, *val, *tb;
int rc;
_Py_IDENTIFIER(close);
- res = _PyObject_CallMethodId((PyObject*)&PyRawIOBase_Type,
- &PyId_close, "O", self);
+ res = _PyObject_CallMethodIdObjArgs((PyObject*)&PyRawIOBase_Type,
+ &PyId_close, self, NULL);
if (!self->closehandle) {
self->handle = INVALID_HANDLE_VALUE;
return res;