1. 18 Oct, 2018 8 commits
    • Lewis Baker's avatar
      Replace AwaitWraper with new co_viaIfAsync operator · dea4f330
      Lewis Baker authored
      Summary:
      Refactored the `AwaitWrapper` class to expose its functionality as a new `co_viaIfAsync()` operator that returns a `ViaIfAsyncAwaitable<Awaitable>` type.
      
      The `folly::coro::Task` promise_type now delegates wrapping the awaited operations to the new `co_viaIfAsync()` operator. This allows SemiAwaitable types to customise how they are awaited from within a folly::coro::Task coroutine by providing an overload for `co_viaIfAsync()` rather than intrusively modifying the `folly::coro::Task` implementation.
      
      Reviewed By: andriigrynenko
      
      Differential Revision: D9983074
      
      fbshipit-source-id: 87d80001879ac7aa3be473339ba259229dafc262
      dea4f330
    • Maged Michael's avatar
      Disable ParkinkLot.WaitableMutexTest under TSAN · cce0bb0a
      Maged Michael authored
      Summary: Disable ParkinkLot.WaitableMutexTest under TSAN for now. It currently fails under TSAN due to the possibility of a mutex being unlocked by a different thread.
      
      Reviewed By: djwatson
      
      Differential Revision: D10446986
      
      fbshipit-source-id: 21ec53e27fffd566956f4e8ef1d3084765138b75
      cce0bb0a
    • Nathan Bronson's avatar
      use sized deallocation for overaligned-memory helpers · 2bc39ca1
      Nathan Bronson authored
      Summary:
      This diff makes the overaligned memory helpers in folly/Memory.h
      use the sized operator delete when it is available.  These helpers
      perform memory allocation and deallocation for the F14 hash table.
      Sized deallocation is much more CPU efficient.
      
      This diff also refactors the logic of allocateOverAligned and
      deallocateOverAligned, removing duplication of the compile-time machinery
      and making the alloc/dealloc pairings more clear.
      
      Reviewed By: yfeldblum, marksantaniello
      
      Differential Revision: D10411913
      
      fbshipit-source-id: ddd306619c28c8317fdebce8b24b18695ff16f5d
      2bc39ca1
    • Francois Visconte's avatar
      Fix a few inconsistencies in folly benchmarks · dbcba7de
      Francois Visconte authored
      Summary:
      Avoid printing to standard output in benchmark which poison output when using
      `-json_output` flag.
      
      Make SynchronizedBenchmark run benchmark only (like any other benchmarks out
      there)
      
      Reviewed By: yfeldblum
      
      Differential Revision: D10405010
      
      fbshipit-source-id: b034123fcda9d8b8d6ba6967641305886cb12673
      dbcba7de
    • Adam Simpkins's avatar
      cmake: find threads before applying compiler settings · d949df1f
      Adam Simpkins authored
      Summary:
      In D10405960 I moved folly-deps.cmake to be processed after
      FollyCompilerMSVC.cmake.
      
      It turns out that this causes configuration to fail in confusing ways when
      compiling with clang.  CMake fails reporting that it cannot find pthread.h,
      but the real problem is just that clang does not like the `-std=gnu++14` flag
      that has been applied by FollyCompilerUnix.cmake.  CMake doesn't appear to
      have C++-only version of `CMAKE_REQUIRED_FLAGS`, so this `-std` flag was being
      used even when invoking clang in C-only mode.
      
      Moving the `find_package(Threads)` call avoids this issue.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D10435249
      
      fbshipit-source-id: 214ec9bbef43679864f714dc39c1e4423081c09b
      d949df1f
    • Andrii Grynenko's avatar
      Implement tail call optimization · 7bcd14c5
      Andrii Grynenko authored
      Summary: This adds an optimization for cases where recursive .then() is used to implement a loop. Instead of creating a chain of Cores that fulfil each other, we steal a callback from previous core if possible.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D10392101
      
      fbshipit-source-id: 008c644df7472f5e280b24a41c62ee7199954abc
      7bcd14c5
    • Kirk Shoop's avatar
      restructure pushmi for folly · 6fc4b643
      Kirk Shoop authored
      Summary:
      removed top level project matter
      removed old build structure
      removed single header
      removed nonious
      moved include files to root
      change include paths to work in folly
      add TARGETS files for tests and most examples
      commented out catch tests pending gtest migration
      added cpp libraries for core, executors and operators
      fixes for additional warnings that are enabled in folly
      
      Reviewed By: yfeldblum
      
      Differential Revision: D10438543
      
      fbshipit-source-id: 73af41a2c70cba126e063c6a8cf4363dc7444fef
      6fc4b643
    • Yedidya Feldblum's avatar
      Cut DestructorGuard default ctor · e9ec6e17
      Yedidya Feldblum authored
      Summary:
      [Folly] Cut `DestructorGuard` default ctor. It does not actually need one, but its presence can hurt.
      
      ```lang=c++
      void callback() {
        // compiles, which can hurt:
        DestructorGuard(delayed);
      
        // intended:
        DestructorGuard guard(delayed);
      }
      ```
      
      Reviewed By: lbrandy
      
      Differential Revision: D10413329
      
      fbshipit-source-id: f84eb0de0290cb09f7ac358044c2ef2d71dd8cea
      e9ec6e17
  2. 17 Oct, 2018 32 commits