Bug 242598

Summary: Refine C++ coroutine use
Product: WebKit Reporter: Alex Christensen <achristensen>
Component: WebKit Misc.Assignee: Alex Christensen <achristensen>
Status: RESOLVED FIXED    
Severity: Normal CC: webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   

Alex Christensen
Reported 2022-07-11 11:57:04 PDT
Task::promise_type::final_suspend() needs to return a std::experimental::suspend_always instead of a std::experimental::suspend_never, otherwise it crashes if we ever use co_return. We don't yet, but we probably will. ReceiveOperation and SendOperation inherit from std::experimental::suspend_never but override await_ready with an implementation more like std::experimental::suspend_always, and an await_suspend that actually does something interesting. Instead of inheriting from std::experimental::suspend_never, just write out everything it does, which just requires adding an await_resume that returns void.
Attachments
Alex Christensen
Comment 1 2022-07-11 12:01:56 PDT
EWS
Comment 2 2022-07-13 16:53:43 PDT
Committed 252430@main (270e5776c43a): <https://commits.webkit.org/252430@main> Reviewed commits have been landed. Closing PR #2297 and removing active labels.
Radar WebKit Bug Importer
Comment 3 2022-07-13 16:54:23 PDT
Note You need to log in before you can comment on or make changes to this bug.