Skip to content

Commit 41e9a59

Browse files
committed
Switch back to original "assign task number at construction" but store the counter as PyLong for deferred formatting
1 parent fb2bd7f commit 41e9a59

File tree

1 file changed

+7
-8
lines changed

1 file changed

+7
-8
lines changed

Modules/_asynciomodule.c

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2070,8 +2070,9 @@ _asyncio_Task___init___impl(TaskObj *self, PyObject *coro, PyObject *loop,
20702070

20712071
if (name == Py_None) {
20722072
// optimization: defer task name formatting
2073-
// set task_name to None to indicate deferred formatting
2074-
Py_INCREF(name);
2073+
// store the task counter as PyLong in the name
2074+
// for deferred formatting in get_name
2075+
name = PyLong_FromUnsignedLongLong(++state->task_name_counter);
20752076
} else if (!PyUnicode_CheckExact(name)) {
20762077
name = PyObject_Str(name);
20772078
} else {
@@ -2450,14 +2451,12 @@ _asyncio_Task_get_name_impl(TaskObj *self)
24502451
/*[clinic end generated code: output=0ecf1570c3b37a8f input=a4a6595d12f4f0f8]*/
24512452
{
24522453
if (self->task_name) {
2453-
if (Py_IsNone(self->task_name)) {
2454-
asyncio_state *state = get_asyncio_state_by_def((PyObject *)self);
2455-
PyObject *name = PyUnicode_FromFormat(
2456-
"Task-%" PRIu64, ++state->task_name_counter);
2457-
Py_XSETREF(self->task_name, name);
2458-
if (self->task_name == NULL) {
2454+
if (PyLong_CheckExact(self->task_name)) {
2455+
PyObject *name = PyUnicode_FromFormat("Task-%S", self->task_name);
2456+
if (name == NULL) {
24592457
return NULL;
24602458
}
2459+
Py_SETREF(self->task_name, name);
24612460
}
24622461
return Py_NewRef(self->task_name);
24632462
}

0 commit comments

Comments
 (0)