@@ -122,7 +122,6 @@ typedef enum {
122122 fut_state prefix##_state; \
123123 int prefix##_log_tb; \
124124 int prefix##_blocking; \
125- PyObject *dict; \
126125 PyObject *prefix##_weakreflist; \
127126 PyObject *prefix##_cancelled_exc;
128127
@@ -489,7 +488,6 @@ future_init(FutureObj *fut, PyObject *loop)
489488 PyObject * res ;
490489 int is_true ;
491490
492- // Same to FutureObj_clear() but not clearing fut->dict
493491 Py_CLEAR (fut -> fut_loop );
494492 Py_CLEAR (fut -> fut_callback0 );
495493 Py_CLEAR (fut -> fut_context0 );
@@ -814,7 +812,7 @@ FutureObj_clear(FutureObj *fut)
814812 Py_CLEAR (fut -> fut_source_tb );
815813 Py_CLEAR (fut -> fut_cancel_msg );
816814 Py_CLEAR (fut -> fut_cancelled_exc );
817- Py_CLEAR ( fut -> dict );
815+ _PyObject_ClearManagedDict (( PyObject * ) fut );
818816 return 0 ;
819817}
820818
@@ -832,7 +830,7 @@ FutureObj_traverse(FutureObj *fut, visitproc visit, void *arg)
832830 Py_VISIT (fut -> fut_source_tb );
833831 Py_VISIT (fut -> fut_cancel_msg );
834832 Py_VISIT (fut -> fut_cancelled_exc );
835- Py_VISIT ( fut -> dict );
833+ _PyObject_VisitManagedDict (( PyObject * ) fut , visit , arg );
836834 return 0 ;
837835}
838836
@@ -1502,7 +1500,6 @@ static PyMethodDef FutureType_methods[] = {
15021500
15031501static PyMemberDef FutureType_members [] = {
15041502 {"__weaklistoffset__" , T_PYSSIZET , offsetof(FutureObj , fut_weakreflist ), READONLY },
1505- {"__dictoffset__" , T_PYSSIZET , offsetof(FutureObj , dict ), READONLY },
15061503 {NULL },
15071504};
15081505
@@ -1551,7 +1548,7 @@ static PyType_Spec Future_spec = {
15511548 .name = "_asyncio.Future" ,
15521549 .basicsize = sizeof (FutureObj ),
15531550 .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE |
1554- Py_TPFLAGS_IMMUTABLETYPE ),
1551+ Py_TPFLAGS_IMMUTABLETYPE | Py_TPFLAGS_MANAGED_DICT ),
15551552 .slots = Future_slots ,
15561553};
15571554
@@ -2183,7 +2180,7 @@ TaskObj_traverse(TaskObj *task, visitproc visit, void *arg)
21832180 Py_VISIT (fut -> fut_source_tb );
21842181 Py_VISIT (fut -> fut_cancel_msg );
21852182 Py_VISIT (fut -> fut_cancelled_exc );
2186- Py_VISIT ( fut -> dict );
2183+ _PyObject_VisitManagedDict (( PyObject * ) fut , visit , arg );
21872184 return 0 ;
21882185}
21892186
@@ -2640,7 +2637,6 @@ static PyMethodDef TaskType_methods[] = {
26402637
26412638static PyMemberDef TaskType_members [] = {
26422639 {"__weaklistoffset__" , T_PYSSIZET , offsetof(TaskObj , task_weakreflist ), READONLY },
2643- {"__dictoffset__" , T_PYSSIZET , offsetof(TaskObj , dict ), READONLY },
26442640 {NULL },
26452641};
26462642
@@ -2677,7 +2673,7 @@ static PyType_Spec Task_spec = {
26772673 .name = "_asyncio.Task" ,
26782674 .basicsize = sizeof (TaskObj ),
26792675 .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE |
2680- Py_TPFLAGS_IMMUTABLETYPE ),
2676+ Py_TPFLAGS_IMMUTABLETYPE | Py_TPFLAGS_MANAGED_DICT ),
26812677 .slots = Task_slots ,
26822678};
26832679
0 commit comments