As part of working on async deinit, I'm trying to make task that were enqueued, but did not start running yet to be as cheap as possible. In particular, I'm trying to avoid allocating slabs for task allocator until task starts running.
I've looked into this a bit, and tried to store
TaskDependencyStatusRecord in the
TaskPrivate, but I've hit this static assertion:
static assertion failed due to requirement 'sizeof(swift::AsyncTask::PrivateStorage) <= sizeof(swift::AsyncTask::OpaquePrivateStorage)': Task-private storage doesn't fit in reserved space
I'm 16 bytes short.
OpaquePrivateStorage is part of the ABI. Does that mean that size of the
OpaquePrivateStorage cannot be changed?
If not, can I instead change memory layout of the
TaskDependencyStatusRecord (which is also in the
ABI folder)? I probably could avoid storing
AsyncTask *WaitingTask;. And if
TaskDependencyStatusRecord gets its own dedicated field inside
TaskPrivate, does it even need to be a subclass of