mirror of
https://github.com/python/cpython.git
synced 2026-01-06 15:32:22 +00:00
gh-97696: Use PyObject_CallMethodNoArgs and inline is_loop_running check in _asyncio (#104255)
This commit is contained in:
parent
b35711d17a
commit
c53547c907
1 changed files with 5 additions and 18 deletions
|
|
@ -2063,21 +2063,6 @@ swap_current_task(asyncio_state *state, PyObject *loop, PyObject *task)
|
|||
return prev_task;
|
||||
}
|
||||
|
||||
static int
|
||||
is_loop_running(PyObject *loop)
|
||||
{
|
||||
PyObject *func = PyObject_GetAttr(loop, &_Py_ID(is_running));
|
||||
if (func == NULL) {
|
||||
PyErr_Format(PyExc_TypeError, "Loop missing is_running()");
|
||||
return -1;
|
||||
}
|
||||
PyObject *res = PyObject_CallNoArgs(func);
|
||||
int retval = Py_IsTrue(res);
|
||||
Py_DECREF(func);
|
||||
Py_DECREF(res);
|
||||
return !!retval;
|
||||
}
|
||||
|
||||
/* ----- Task */
|
||||
|
||||
/*[clinic input]
|
||||
|
|
@ -2148,11 +2133,13 @@ _asyncio_Task___init___impl(TaskObj *self, PyObject *coro, PyObject *loop,
|
|||
}
|
||||
|
||||
if (eager_start) {
|
||||
int loop_running = is_loop_running(self->task_loop);
|
||||
if (loop_running == -1) {
|
||||
PyObject *res = PyObject_CallMethodNoArgs(loop, &_Py_ID(is_running));
|
||||
if (res == NULL) {
|
||||
return -1;
|
||||
}
|
||||
if (loop_running) {
|
||||
int is_loop_running = Py_IsTrue(res);
|
||||
Py_DECREF(res);
|
||||
if (is_loop_running) {
|
||||
if (task_eager_start(state, self)) {
|
||||
return -1;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue