mirror of https://github.com/python/cpython
bpo-29548: Fix some inefficient call API usage (GH-97)
This commit is contained in:
parent
72e81d00ee
commit
72dccde884
|
@ -3070,7 +3070,7 @@ slot_tp_del(PyObject *self)
|
||||||
/* Execute __del__ method, if any. */
|
/* Execute __del__ method, if any. */
|
||||||
del = _PyObject_LookupSpecial(self, &PyId___tp_del__);
|
del = _PyObject_LookupSpecial(self, &PyId___tp_del__);
|
||||||
if (del != NULL) {
|
if (del != NULL) {
|
||||||
res = PyEval_CallObject(del, NULL);
|
res = _PyObject_CallNoArg(del);
|
||||||
if (res == NULL)
|
if (res == NULL)
|
||||||
PyErr_WriteUnraisable(del);
|
PyErr_WriteUnraisable(del);
|
||||||
else
|
else
|
||||||
|
|
|
@ -994,8 +994,7 @@ t_bootstrap(void *boot_raw)
|
||||||
_PyThreadState_Init(tstate);
|
_PyThreadState_Init(tstate);
|
||||||
PyEval_AcquireThread(tstate);
|
PyEval_AcquireThread(tstate);
|
||||||
nb_threads++;
|
nb_threads++;
|
||||||
res = PyEval_CallObjectWithKeywords(
|
res = PyObject_Call(boot->func, boot->args, boot->keyw);
|
||||||
boot->func, boot->args, boot->keyw);
|
|
||||||
if (res == NULL) {
|
if (res == NULL) {
|
||||||
if (PyErr_ExceptionMatches(PyExc_SystemExit))
|
if (PyErr_ExceptionMatches(PyExc_SystemExit))
|
||||||
PyErr_Clear();
|
PyErr_Clear();
|
||||||
|
|
|
@ -2417,7 +2417,7 @@ PythonCmd(ClientData clientData, Tcl_Interp *interp, int argc, const char *argv[
|
||||||
}
|
}
|
||||||
PyTuple_SET_ITEM(arg, i, s);
|
PyTuple_SET_ITEM(arg, i, s);
|
||||||
}
|
}
|
||||||
res = PyEval_CallObject(func, arg);
|
res = PyObject_Call(func, arg, NULL);
|
||||||
Py_DECREF(arg);
|
Py_DECREF(arg);
|
||||||
|
|
||||||
if (res == NULL)
|
if (res == NULL)
|
||||||
|
@ -2661,16 +2661,13 @@ static void
|
||||||
FileHandler(ClientData clientData, int mask)
|
FileHandler(ClientData clientData, int mask)
|
||||||
{
|
{
|
||||||
FileHandler_ClientData *data = (FileHandler_ClientData *)clientData;
|
FileHandler_ClientData *data = (FileHandler_ClientData *)clientData;
|
||||||
PyObject *func, *file, *arg, *res;
|
PyObject *func, *file, *res;
|
||||||
|
|
||||||
ENTER_PYTHON
|
ENTER_PYTHON
|
||||||
func = data->func;
|
func = data->func;
|
||||||
file = data->file;
|
file = data->file;
|
||||||
|
|
||||||
arg = Py_BuildValue("(Oi)", file, (long) mask);
|
res = PyObject_CallFunction(func, "Oi", file, mask);
|
||||||
res = PyEval_CallObject(func, arg);
|
|
||||||
Py_DECREF(arg);
|
|
||||||
|
|
||||||
if (res == NULL) {
|
if (res == NULL) {
|
||||||
errorInCmd = 1;
|
errorInCmd = 1;
|
||||||
PyErr_Fetch(&excInCmd, &valInCmd, &trbInCmd);
|
PyErr_Fetch(&excInCmd, &valInCmd, &trbInCmd);
|
||||||
|
@ -2840,7 +2837,7 @@ TimerHandler(ClientData clientData)
|
||||||
|
|
||||||
ENTER_PYTHON
|
ENTER_PYTHON
|
||||||
|
|
||||||
res = PyEval_CallObject(func, NULL);
|
res = _PyObject_CallNoArg(func);
|
||||||
Py_DECREF(func);
|
Py_DECREF(func);
|
||||||
Py_DECREF(v); /* See Tktt_New() */
|
Py_DECREF(v); /* See Tktt_New() */
|
||||||
|
|
||||||
|
|
|
@ -1329,7 +1329,7 @@ PyNumber_Long(PyObject *o)
|
||||||
}
|
}
|
||||||
trunc_func = _PyObject_LookupSpecial(o, &PyId___trunc__);
|
trunc_func = _PyObject_LookupSpecial(o, &PyId___trunc__);
|
||||||
if (trunc_func) {
|
if (trunc_func) {
|
||||||
result = PyEval_CallObject(trunc_func, NULL);
|
result = _PyObject_CallNoArg(trunc_func);
|
||||||
Py_DECREF(trunc_func);
|
Py_DECREF(trunc_func);
|
||||||
if (result == NULL || PyLong_CheckExact(result)) {
|
if (result == NULL || PyLong_CheckExact(result)) {
|
||||||
return result;
|
return result;
|
||||||
|
|
|
@ -49,6 +49,7 @@ PyFile_FromFd(int fd, const char *name, const char *mode, int buffering, const c
|
||||||
PyObject *
|
PyObject *
|
||||||
PyFile_GetLine(PyObject *f, int n)
|
PyFile_GetLine(PyObject *f, int n)
|
||||||
{
|
{
|
||||||
|
_Py_IDENTIFIER(readline);
|
||||||
PyObject *result;
|
PyObject *result;
|
||||||
|
|
||||||
if (f == NULL) {
|
if (f == NULL) {
|
||||||
|
@ -56,32 +57,18 @@ PyFile_GetLine(PyObject *f, int n)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
if (n <= 0) {
|
||||||
PyObject *reader;
|
result = _PyObject_CallMethodIdObjArgs(f, &PyId_readline, NULL);
|
||||||
PyObject *args;
|
}
|
||||||
_Py_IDENTIFIER(readline);
|
else {
|
||||||
|
result = _PyObject_CallMethodId(f, &PyId_readline, "i", n);
|
||||||
reader = _PyObject_GetAttrId(f, &PyId_readline);
|
}
|
||||||
if (reader == NULL)
|
if (result != NULL && !PyBytes_Check(result) &&
|
||||||
return NULL;
|
!PyUnicode_Check(result)) {
|
||||||
if (n <= 0)
|
Py_DECREF(result);
|
||||||
args = PyTuple_New(0);
|
result = NULL;
|
||||||
else
|
PyErr_SetString(PyExc_TypeError,
|
||||||
args = Py_BuildValue("(i)", n);
|
"object.readline() returned non-string");
|
||||||
if (args == NULL) {
|
|
||||||
Py_DECREF(reader);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
result = PyEval_CallObject(reader, args);
|
|
||||||
Py_DECREF(reader);
|
|
||||||
Py_DECREF(args);
|
|
||||||
if (result != NULL && !PyBytes_Check(result) &&
|
|
||||||
!PyUnicode_Check(result)) {
|
|
||||||
Py_DECREF(result);
|
|
||||||
result = NULL;
|
|
||||||
PyErr_SetString(PyExc_TypeError,
|
|
||||||
"object.readline() returned non-string");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (n < 0 && result != NULL && PyBytes_Check(result)) {
|
if (n < 0 && result != NULL && PyBytes_Check(result)) {
|
||||||
|
@ -197,7 +184,7 @@ PyObject_AsFileDescriptor(PyObject *o)
|
||||||
}
|
}
|
||||||
else if ((meth = _PyObject_GetAttrId(o, &PyId_fileno)) != NULL)
|
else if ((meth = _PyObject_GetAttrId(o, &PyId_fileno)) != NULL)
|
||||||
{
|
{
|
||||||
PyObject *fno = PyEval_CallObject(meth, NULL);
|
PyObject *fno = _PyObject_CallNoArg(meth);
|
||||||
Py_DECREF(meth);
|
Py_DECREF(meth);
|
||||||
if (fno == NULL)
|
if (fno == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
|
@ -4348,7 +4348,7 @@ _common_reduce(PyObject *self, int proto)
|
||||||
if (!copyreg)
|
if (!copyreg)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
res = PyEval_CallMethod(copyreg, "_reduce_ex", "(Oi)", self, proto);
|
res = PyObject_CallMethod(copyreg, "_reduce_ex", "Oi", self, proto);
|
||||||
Py_DECREF(copyreg);
|
Py_DECREF(copyreg);
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
|
|
|
@ -461,7 +461,7 @@ proxy_checkref(PyWeakReference *proxy)
|
||||||
|
|
||||||
WRAP_BINARY(proxy_getattr, PyObject_GetAttr)
|
WRAP_BINARY(proxy_getattr, PyObject_GetAttr)
|
||||||
WRAP_UNARY(proxy_str, PyObject_Str)
|
WRAP_UNARY(proxy_str, PyObject_Str)
|
||||||
WRAP_TERNARY(proxy_call, PyEval_CallObjectWithKeywords)
|
WRAP_TERNARY(proxy_call, PyObject_Call)
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
proxy_repr(PyWeakReference *proxy)
|
proxy_repr(PyWeakReference *proxy)
|
||||||
|
|
Loading…
Reference in New Issue