@@ -44,15 +44,15 @@ typedef enum {
4444 PyObject *prefix##_cancelled_exc; \
4545 PyObject *prefix##_awaited_by; \
4646 fut_state prefix##_state; \
47+ /* Used by profilers to make traversing the stack from an external \
48+ process faster. NOTE: can't be bit fields. */ \
49+ char prefix ##_is_task ; \
50+ char prefix ##_awaited_by_is_set ; \
4751 /* These bitfields need to be at the end of the struct \
4852 so that these and bitfields from TaskObj are contiguous. \
4953 */ \
5054 unsigned prefix ##_log_tb : 1 ; \
5155 unsigned prefix ##_blocking : 1 ; \
52- /* Used by profilers to make traversing the stack from an external \
53- process faster. */ \
54- unsigned prefix ##_is_task : 1 ; \
55- unsigned prefix ##_awaited_by_is_set : 1 ;
5656
5757typedef struct {
5858 FutureObj_HEAD (fut )
@@ -122,6 +122,7 @@ extern PyTypeObject _PyExc_MemoryError;
122122 .instr_ptr = offsetof(_PyInterpreterFrame, instr_ptr), \
123123 .localsplus = offsetof(_PyInterpreterFrame, localsplus), \
124124 .owner = offsetof(_PyInterpreterFrame, owner), \
125+ .stackpointer = offsetof(_PyInterpreterFrame, stackpointer), \
125126 }, \
126127 .code_object = { \
127128 .size = sizeof(PyCodeObject), \
@@ -155,6 +156,11 @@ extern PyTypeObject _PyExc_MemoryError;
155156 .ob_item = offsetof(PyListObject, ob_item), \
156157 .ob_size = offsetof(PyListObject, ob_base.ob_size), \
157158 }, \
159+ .set_object = { \
160+ .size = sizeof(PySetObject), \
161+ .used = offsetof(PySetObject, used), \
162+ .table = offsetof(PySetObject, table), \
163+ }, \
158164 .dict_object = { \
159165 .size = sizeof(PyDictObject), \
160166 .ma_keys = offsetof(PyDictObject, ma_keys), \
@@ -186,13 +192,18 @@ extern PyTypeObject _PyExc_MemoryError;
186192 }, \
187193 .gen_object = { \
188194 .size = sizeof(PyGenObject), \
195+ .gi_name = offsetof(PyGenObject, gi_name), \
189196 .gi_iframe = offsetof(PyGenObject, gi_iframe), \
190197 .gi_task = offsetof(PyGenObject, gi_task), \
198+ .gi_frame_state = offsetof(PyGenObject, gi_frame_state), \
191199 }, \
192200 .asyncio_task_object = { \
193201 .size = sizeof(TaskObj), \
194202 .task_name = offsetof(TaskObj, task_name), \
195203 .task_awaited_by = offsetof(TaskObj, task_awaited_by), \
204+ .task_is_task = offsetof(TaskObj, task_is_task), \
205+ .task_awaited_by_is_set = offsetof(TaskObj, task_awaited_by_is_set), \
206+ .task_coro = offsetof(TaskObj, task_coro), \
196207 }, \
197208 }, \
198209 .allocators = { \
0 commit comments