Page MenuHomePhabricator

lewissbaker (Lewis Baker)
User

Projects

User does not belong to any projects.

User Details

User Since
Oct 31 2017, 1:00 PM (89 w, 6 d)

Recent Activity

Apr 8 2019

lewissbaker added a comment to D46140: [coroutines] Add std::experimental::task<T> type.

Gentle ping.

Apr 8 2019, 8:46 PM

Apr 3 2019

lewissbaker added inline comments to D46140: [coroutines] Add std::experimental::task<T> type.
Apr 3 2019, 12:48 PM

Mar 29 2019

lewissbaker updated the diff for D46140: [coroutines] Add std::experimental::task<T> type.

This updated diff should address most of @CaseyCarter's review comments.

Mar 29 2019, 5:03 PM
lewissbaker added a comment to D46140: [coroutines] Add std::experimental::task<T> type.

Thanks very much for the detailed review @CaseyCarter! Very much appreciated :)

Mar 29 2019, 4:56 PM

Mar 26 2019

lewissbaker added a comment to D46140: [coroutines] Add std::experimental::task<T> type.

@EricWF This implementation will currently not work with MSVC as MSVC does not yet support the symmetric-transfer capability added to the coroutines specification in P0913R0.

Mar 26 2019, 11:06 PM
lewissbaker updated the diff for D46140: [coroutines] Add std::experimental::task<T> type.

Added missing 'require coroutines' for experimental/task entry in module.modulemap
Added missing #include in experimental/task header that was failing module builds

Mar 26 2019, 4:08 PM
lewissbaker reopened D46140: [coroutines] Add std::experimental::task<T> type.

Reopening as the commit for this diff was reverted due to it breaking the buildbot module builds.

Mar 26 2019, 4:04 PM
lewissbaker retitled D46140: [coroutines] Add std::experimental::task<T> type from [coroutines] std::task type (WIP) to [coroutines] Add std::experimental::task<T> type.
Mar 26 2019, 10:19 AM

Mar 25 2019

lewissbaker updated the diff for D46140: [coroutines] Add std::experimental::task<T> type.

Fix race condition in __oneshot_event::set() method used by sync_wait().

Mar 25 2019, 2:33 PM
lewissbaker updated the diff for D46140: [coroutines] Add std::experimental::task<T> type.
Mar 25 2019, 2:27 PM

Mar 7 2019

lewissbaker added inline comments to D59076: [coroutines][PR40978] Emit error for co_yield within catch block.
Mar 7 2019, 1:11 PM · Restricted Project
lewissbaker added inline comments to D59076: [coroutines][PR40978] Emit error for co_yield within catch block.
Mar 7 2019, 1:07 PM · Restricted Project
lewissbaker added inline comments to D59076: [coroutines][PR40978] Emit error for co_yield within catch block.
Mar 7 2019, 10:45 AM · Restricted Project

Sep 20 2018

lewissbaker added inline comments to D46140: [coroutines] Add std::experimental::task<T> type.
Sep 20 2018, 10:35 AM

Jul 20 2018

lewissbaker updated the diff for D46140: [coroutines] Add std::experimental::task<T> type.
  • Make task<T> constructor from coroutine_handle private.
  • Run clang-format over <experimental/task>.
Jul 20 2018, 5:46 PM
lewissbaker updated the diff for D46140: [coroutines] Add std::experimental::task<T> type.

Many improvements:

  • Remove move-assignment operator
  • task<T>::operator co_await() now returns by value when awaiting task<T> rvalue.
  • Explicitly scope calls to std-library functions that live in _VSTD.
  • Make __task_promise ABI stable under exception/no-exception compilation modes.
  • Moved __aligned_allocation_size to <experimental/__memory>
  • Make task<T> have a default template parameter of void, allowing task<> to mean task<void>
  • Allow co_return { ... } by adding overload of return_value() taking T&& and another taking initializer_list<U>.
  • Implement optimisation that avoids storing the allocator in the coroutine frame if allocator_traits<A>::is_always_equal is true and the allocator is default constructible.
  • Added unit-tests (currently failing some custom allocator tests under debug builds)
Jul 20 2018, 12:26 PM

May 2 2018

lewissbaker updated the diff for D46140: [coroutines] Add std::experimental::task<T> type.
  • Explicitly delete __task_promise_base special member functions.
  • Declare _task_promise_base::operator delete() as _NOEXCEPT.
  • Explicitly scope _VSTD::move() calls for user-defined types.
  • Explicitly call global-scope placement operator new for user-defined types.
  • Tweak task::operator=() to remove ambiguity with deleted operator=(const task&).
May 2 2018, 7:58 PM
lewissbaker added inline comments to D46140: [coroutines] Add std::experimental::task<T> type.
May 2 2018, 7:48 PM
lewissbaker added inline comments to D46140: [coroutines] Add std::experimental::task<T> type.
May 2 2018, 7:16 AM

May 1 2018

lewissbaker removed a child revision for D46140: [coroutines] Add std::experimental::task<T> type: D46312: Updated <experimental/task> WIP.
May 1 2018, 4:04 PM
lewissbaker removed a parent revision for D46312: Updated <experimental/task> WIP: D46140: [coroutines] Add std::experimental::task<T> type.
May 1 2018, 4:04 PM
lewissbaker updated the diff for D46140: [coroutines] Add std::experimental::task<T> type.

Addressed some feedback from initial version.

  • factored out allocator padding calculations
  • use anonymous unions instead of char-buffers and reinterpret_cast
  • make co_await'ing an invalid task have undefined behaviour
  • run clang-format over the file to fix some formatting
May 1 2018, 7:49 AM
lewissbaker commandeered D46140: [coroutines] Add std::experimental::task<T> type.
May 1 2018, 7:27 AM
lewissbaker abandoned D46312: Updated <experimental/task> WIP.
May 1 2018, 7:08 AM
lewissbaker added a child revision for D46140: [coroutines] Add std::experimental::task<T> type: D46312: Updated <experimental/task> WIP.
May 1 2018, 7:04 AM
lewissbaker created D46312: Updated <experimental/task> WIP.
May 1 2018, 7:04 AM
lewissbaker added a parent revision for D46312: Updated <experimental/task> WIP: D46140: [coroutines] Add std::experimental::task<T> type.
May 1 2018, 7:04 AM
lewissbaker added a comment to D46140: [coroutines] Add std::experimental::task<T> type.

I have posted an updated version of the code here: https://gist.github.com/lewissbaker/38ba1d8a13e4fb0906559b7aa1c413d3

May 1 2018, 5:26 AM
lewissbaker added inline comments to D46140: [coroutines] Add std::experimental::task<T> type.
May 1 2018, 4:36 AM

Apr 3 2018

lewissbaker added inline comments to D45121: [coroutines] Add noop_coroutine to <experimental/coroutine>.
Apr 3 2018, 11:57 PM
lewissbaker accepted D45121: [coroutines] Add noop_coroutine to <experimental/coroutine>.

The coroutine_handle<noop_coroutine_promise> type does not have a from_address() or a from_promise() static functions in the same way that the coroutine_handle<P> implementation does.
Is this intentional or an oversight in the TS wording?

Apr 3 2018, 6:13 PM

Dec 14 2017

lewissbaker accepted D40273: [coroutine] Respect alloca alignment requirements..

All looks fine to me.

Dec 14 2017, 3:15 AM

Nov 1 2017

lewissbaker added inline comments to D37112: [coroutines] Always place escaped allocas into the coroutine frame.
Nov 1 2017, 4:38 AM
lewissbaker added inline comments to D37112: [coroutines] Always place escaped allocas into the coroutine frame.
Nov 1 2017, 4:32 AM