PyObject *prefix##_result; \
PyObject *prefix##_source_tb; \
PyObject *prefix##_cancel_msg; \
- PyObject *prefix##_weakreflist; \
PyObject *prefix##_cancelled_exc; \
fut_state prefix##_state; \
/* These bitfields need to be at the end of the struct
{NULL, NULL} /* Sentinel */
};
-static PyMemberDef FutureType_members[] = {
- {"__weaklistoffset__", T_PYSSIZET, offsetof(FutureObj, fut_weakreflist), READONLY},
- {NULL},
-};
-
#define FUTURE_COMMON_GETSETLIST \
{"_state", (getter)FutureObj_get_state, NULL, NULL}, \
{"_asyncio_future_blocking", (getter)FutureObj_get_blocking, \
{Py_tp_clear, (inquiry)FutureObj_clear},
{Py_tp_iter, (getiterfunc)future_new_iter},
{Py_tp_methods, FutureType_methods},
- {Py_tp_members, FutureType_members},
{Py_tp_getset, FutureType_getsetlist},
{Py_tp_init, (initproc)_asyncio_Future___init__},
{Py_tp_new, PyType_GenericNew},
.name = "_asyncio.Future",
.basicsize = sizeof(FutureObj),
.flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE |
- Py_TPFLAGS_IMMUTABLETYPE | Py_TPFLAGS_MANAGED_DICT),
+ Py_TPFLAGS_IMMUTABLETYPE | Py_TPFLAGS_MANAGED_DICT |
+ Py_TPFLAGS_MANAGED_WEAKREF),
.slots = Future_slots,
};
PyTypeObject *tp = Py_TYPE(fut);
PyObject_GC_UnTrack(self);
- if (fut->fut_weakreflist != NULL) {
- PyObject_ClearWeakRefs(self);
- }
+ PyObject_ClearWeakRefs(self);
(void)FutureObj_clear(fut);
tp->tp_free(fut);
{NULL, NULL} /* Sentinel */
};
-static PyMemberDef TaskType_members[] = {
- {"__weaklistoffset__", T_PYSSIZET, offsetof(TaskObj, task_weakreflist), READONLY},
- {NULL},
-};
-
static PyGetSetDef TaskType_getsetlist[] = {
FUTURE_COMMON_GETSETLIST
{"_log_destroy_pending", (getter)TaskObj_get_log_destroy_pending,
{Py_tp_clear, (inquiry)TaskObj_clear},
{Py_tp_iter, (getiterfunc)future_new_iter},
{Py_tp_methods, TaskType_methods},
- {Py_tp_members, TaskType_members},
{Py_tp_getset, TaskType_getsetlist},
{Py_tp_init, (initproc)_asyncio_Task___init__},
{Py_tp_new, PyType_GenericNew},
.name = "_asyncio.Task",
.basicsize = sizeof(TaskObj),
.flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE |
- Py_TPFLAGS_IMMUTABLETYPE | Py_TPFLAGS_MANAGED_DICT),
+ Py_TPFLAGS_IMMUTABLETYPE | Py_TPFLAGS_MANAGED_DICT |
+ Py_TPFLAGS_MANAGED_WEAKREF),
.slots = Task_slots,
};
PyTypeObject *tp = Py_TYPE(task);
PyObject_GC_UnTrack(self);
- if (task->task_weakreflist != NULL) {
- PyObject_ClearWeakRefs(self);
- }
+ PyObject_ClearWeakRefs(self);
(void)TaskObj_clear(task);
tp->tp_free(task);