From: Kumar Aditya <59607654+kumaraditya303@users.noreply.github.com> Date: Tue, 13 Jun 2023 05:41:34 +0000 (+0530) Subject: GH-104787: use bitfields in `_asyncio` (#104788) X-Git-Tag: v3.13.0a1~1778 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=829ac13b69a2b53153e1b40670e6ef82f05130c1;p=thirdparty%2FPython%2Fcpython.git GH-104787: use bitfields in `_asyncio` (#104788) --- diff --git a/Modules/_asynciomodule.c b/Modules/_asynciomodule.c index 08ce172c6a8f..4b84c1de66be 100644 --- a/Modules/_asynciomodule.c +++ b/Modules/_asynciomodule.c @@ -119,11 +119,14 @@ typedef enum { PyObject *prefix##_result; \ PyObject *prefix##_source_tb; \ PyObject *prefix##_cancel_msg; \ - fut_state prefix##_state; \ - int prefix##_log_tb; \ - int prefix##_blocking; \ PyObject *prefix##_weakreflist; \ - PyObject *prefix##_cancelled_exc; + PyObject *prefix##_cancelled_exc; \ + fut_state prefix##_state; \ + /* These bitfields need to be at the end of the struct + so that these and bitfields from TaskObj are contiguous. + */ \ + unsigned prefix##_log_tb: 1; \ + unsigned prefix##_blocking: 1; typedef struct { FutureObj_HEAD(fut) @@ -131,13 +134,13 @@ typedef struct { typedef struct { FutureObj_HEAD(task) + unsigned task_must_cancel: 1; + unsigned task_log_destroy_pending: 1; + int task_num_cancels_requested; PyObject *task_fut_waiter; PyObject *task_coro; PyObject *task_name; PyObject *task_context; - int task_must_cancel; - int task_log_destroy_pending; - int task_num_cancels_requested; } TaskObj; typedef struct {