cpython: 9f32ef6b210b (original) (raw)
--- a/Objects/genobject.c +++ b/Objects/genobject.c @@ -1503,14 +1503,14 @@ PyAsyncGen_ClearFreeLists(void) _PyAsyncGenWrappedValue *o; o = ag_value_freelist[--ag_value_freelist_free]; assert(_PyAsyncGenWrappedValue_CheckExact(o));
PyObject_Del(o);[](#l1.7)
} while (ag_asend_freelist_free) { PyAsyncGenASend *o; o = ag_asend_freelist[--ag_asend_freelist_free]; assert(Py_TYPE(o) == &_PyAsyncGenASend_Type);PyObject_GC_Del(o);[](#l1.8)
PyObject_Del(o);[](#l1.15)
} return ret; @@ -1557,16 +1557,25 @@ async_gen_unwrap_value(PyAsyncGenObject static void async_gen_asend_dealloc(PyAsyncGenASend *o) {PyObject_GC_Del(o);[](#l1.16)
- _PyObject_GC_UNTRACK((PyObject *)o); Py_CLEAR(o->ags_gen); Py_CLEAR(o->ags_sendval); if (ag_asend_freelist_free < _PyAsyncGen_MAXFREELIST) { assert(PyAsyncGenASend_CheckExact(o)); ag_asend_freelist[ag_asend_freelist_free++] = o; } else {
PyObject_Del(o);[](#l1.31)
} } +static int +async_gen_asend_traverse(PyAsyncGenASend *o, visitproc visit, void *arg) +{PyObject_GC_Del(o);[](#l1.32)
- Py_VISIT(o->ags_gen);
- Py_VISIT(o->ags_sendval);
- return 0;
+} + static PyObject * async_gen_asend_send(PyAsyncGenASend *o, PyObject arg) @@ -1668,9 +1677,9 @@ PyTypeObject _PyAsyncGenASend_Type = { PyObject_GenericGetAttr, / tp_getattro / 0, / tp_setattro / 0, / tp_as_buffer */
- (traverseproc)async_gen_asend_traverse, /* tp_traverse / 0, / tp_clear / 0, / tp_richcompare / 0, / tp_weaklistoffset */ @@ -1699,7 +1708,7 @@ async_gen_asend_new(PyAsyncGenObject *ge o = ag_asend_freelist[ag_asend_freelist_free]; _Py_NewReference((PyObject *)o); } else {
o = PyObject_New(PyAsyncGenASend, &_PyAsyncGenASend_Type);[](#l1.63)
o = PyObject_GC_New(PyAsyncGenASend, &_PyAsyncGenASend_Type);[](#l1.64) if (o == NULL) {[](#l1.65) return NULL;[](#l1.66) }[](#l1.67)
@@ -1712,6 +1721,8 @@ async_gen_asend_new(PyAsyncGenObject *ge o->ags_sendval = sendval; o->ags_state = AWAITABLE_STATE_INIT; +
@@ -1722,16 +1733,26 @@ async_gen_asend_new(PyAsyncGenObject *ge static void async_gen_wrapped_val_dealloc(_PyAsyncGenWrappedValue *o) {
- _PyObject_GC_UNTRACK((PyObject *)o); Py_CLEAR(o->agw_val); if (ag_value_freelist_free < _PyAsyncGen_MAXFREELIST) { assert(_PyAsyncGenWrappedValue_CheckExact(o)); ag_value_freelist[ag_value_freelist_free++] = o; } else {
PyObject_Del(o);[](#l1.87)
} } +static int +async_gen_wrapped_val_traverse(_PyAsyncGenWrappedValue *o,PyObject_GC_Del(o);[](#l1.88)
visitproc visit, void *arg)[](#l1.95)
+} + + PyTypeObject _PyAsyncGenWrappedValue_Type = { PyVarObject_HEAD_INIT(&PyType_Type, 0) "async_generator_wrapped_value", /* tp_name / @@ -1753,9 +1774,9 @@ PyTypeObject _PyAsyncGenWrappedValue_Typ PyObject_GenericGetAttr, / tp_getattro / 0, / tp_setattro / 0, / tp_as_buffer */
- (traverseproc)async_gen_wrapped_val_traverse, /* tp_traverse / 0, / tp_clear / 0, / tp_richcompare / 0, / tp_weaklistoffset */ @@ -1787,13 +1808,15 @@ PyObject assert(_PyAsyncGenWrappedValue_CheckExact(o)); _Py_NewReference((PyObject)o); } else {
o = PyObject_New(_PyAsyncGenWrappedValue, &_PyAsyncGenWrappedValue_Type);[](#l1.121)
o = PyObject_GC_New(_PyAsyncGenWrappedValue,[](#l1.122)
} o->agw_val = val; Py_INCREF(val);&_PyAsyncGenWrappedValue_Type);[](#l1.123) if (o == NULL) {[](#l1.124) return NULL;[](#l1.125) }[](#l1.126)
- _PyObject_GC_TRACK((PyObject*)o); return (PyObject*)o; }
@@ -1804,9 +1827,19 @@ PyObject * static void async_gen_athrow_dealloc(PyAsyncGenAThrow *o) {
+} + + +static int +async_gen_athrow_traverse(PyAsyncGenAThrow *o, visitproc visit, void *arg) +{
} @@ -1990,9 +2023,9 @@ PyTypeObject _PyAsyncGenAThrow_Type = { PyObject_GenericGetAttr, /* tp_getattro / 0, / tp_setattro / 0, / tp_as_buffer */