Page MenuHomePhabricator

Please use GitHub pull requests for new patches. Avoid migrating existing patches. Phabricator shutdown timeline

lewissbaker (Lewis Baker)
User

Projects

User does not belong to any projects.

User Details

User Since
Oct 31 2017, 1:00 PM (317 w, 4 d)

Recent Activity

Jun 28 2023

lewissbaker added a comment to D145183: [libc++] Implement `stop_token`.

@lewissbaker are you aware of any benchmarks that would be representative of the way stop_token intends to be used?

Jun 28 2023, 11:14 PM · Restricted Project, Restricted Project

Jun 18 2023

lewissbaker added a comment to D145183: [libc++] Implement `stop_token`.

Sorry for the belated feedback - I only just noticed that the stop_token implementation had been published.

Jun 18 2023, 6:17 AM · Restricted Project, Restricted Project

Oct 25 2021

lewissbaker added a comment to D108696: [Coroutines] [Frontend] Lookup in std namespace first.

So am I correct in understanding that the main issue with the chicken/egg problem for updating both the compiler to use the new stdlib facilities and updating the stdlib facilities is that we don't want to issue warnings about using <experimental/coroutine> and telling users to use <coroutine> instead if there is no <coroutine> header.

Oct 25 2021, 4:18 PM · Restricted Project, Restricted Project, Restricted Project

Oct 24 2021

lewissbaker added a comment to D109433: [libcxx] [coroutine] Conform coroutine implementation.

General comment regarding stdlib/compiler compatibility.

Oct 24 2021, 4:14 PM · Restricted Project, Restricted Project

Aug 27 2021

lewissbaker added inline comments to D105758: Hold mutex lock while notify_all is called at notify_all_at_thread_exit.
Aug 27 2021, 8:36 PM · Restricted Project, Restricted Project

Mar 7 2021

lewissbaker added inline comments to D97915: [Coroutines] Handle overaligned frame allocation.
Mar 7 2021, 4:13 PM · Restricted Project, Restricted Project, Restricted Project

Mar 5 2021

lewissbaker added inline comments to D97915: [Coroutines] Handle overaligned frame allocation.
Mar 5 2021, 5:41 PM · Restricted Project, Restricted Project, Restricted Project

Jun 26 2020

lewissbaker added a comment to D82314: [Coroutines] Optimize the lifespan of temporary co_await object.

There are still room for improvements, in particular, GCC has a 4K frame for this function.

Jun 26 2020, 12:02 PM · Restricted Project, Restricted Project

Jun 25 2020

lewissbaker accepted D82415: [Coroutines] Special handle __builtin_coro_resume for final_suspend nothrow check.

LGTM

Jun 25 2020, 10:46 AM · Restricted Project

Jun 22 2020

lewissbaker added inline comments to D81954: Remove the try/catch codepath if `swap` is `noexcept`..
Jun 22 2020, 9:39 AM · Restricted Project

Jun 18 2020

lewissbaker added inline comments to D82029: [Coroutines] Ensure co_await promise.final_suspend() does not throw.
Jun 18 2020, 2:17 PM · Restricted Project

Sep 3 2019

lewissbaker added inline comments to D61372: [coroutines] Fix spills of static array allocas.
Sep 3 2019, 2:35 PM · Restricted Project

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 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 created D46312: Updated <experimental/task> WIP.
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