gh-128002: add fast path for native tasks in asyncio.all_tasks (#129943)

This commit is contained in:
Kumar Aditya 2025-02-10 15:04:33 +05:30 committed by GitHub
parent 7246b9124c
commit bff4bfeae1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -3991,6 +3991,19 @@ static inline int
add_one_task(asyncio_state *state, PyObject *tasks, PyObject *task, PyObject *loop)
{
assert(PySet_CheckExact(tasks));
if (Task_CheckExact(state, task)) {
int pending = 0;
Py_BEGIN_CRITICAL_SECTION(task);
pending = ((TaskObj *)task)->task_state == STATE_PENDING && ((TaskObj *)task)->task_loop == loop;
Py_END_CRITICAL_SECTION();
if (pending) {
if (PySet_Add(tasks, task) < 0) {
return -1;
}
}
return 0;
}
PyObject *done = PyObject_CallMethodNoArgs(task, &_Py_ID(done));
if (done == NULL) {
return -1;