1. 20 Mar, 2018 6 commits
    • Yedidya Feldblum's avatar
      Let FileUtil::writeFileAtomic use generic_category · 51d23d49
      Yedidya Feldblum authored
      Summary:
      [Folly] Let `FileUtil::writeFileAtomic` use `generic_category`.
      
      `generic_category` is the right choice overall.
      
      And this is an excuse to decouple `FileUtil` from `Conv`.
      
      Reviewed By: simpkins
      
      Differential Revision: D7314184
      
      fbshipit-source-id: fbec3e71098e3ca41b202964886b2740ca592229
      51d23d49
    • Yedidya Feldblum's avatar
      Extract a helper alias for ctor SFINAE in SingletonThreadLocal · 69e68b71
      Yedidya Feldblum authored
      Summary: [Folly] Extract a helper alias for ctor SFINAE in `SingletonThreadLocal`.
      
      Reviewed By: djwatson
      
      Differential Revision: D7316150
      
      fbshipit-source-id: 7e3c49740dab3af37afa8a7a23f4e07cd93ff217
      69e68b71
    • Yedidya Feldblum's avatar
      Rearrange SingletonThreadLocal members · 6e98ea2a
      Yedidya Feldblum authored
      Summary: [Folly] Rearrange `SingletonThreadLocal` members, moving member types above member functions.
      
      Reviewed By: djwatson
      
      Differential Revision: D7316143
      
      fbshipit-source-id: c70b31935d9b5d7428bde777ea62832dc45b3971
      6e98ea2a
    • Yedidya Feldblum's avatar
      Split getWrapperTL from getWrapper in SingletonThreadLocal · 77c09b50
      Yedidya Feldblum authored
      Summary:
      [Folly] Split `getWrapperTL` from `getWrapper` in `SingletonThreadLocal`.
      
      Allows hypothetical future changes to operate on the `ThreadLocal<Wrapper>` singleton itself, in addition to the existing code which operates on the `Wrapper` per-thread-singleton.
      
      Reviewed By: djwatson
      
      Differential Revision: D7316099
      
      fbshipit-source-id: 80a8b7ce28da1bc64b204292032766c648f15944
      77c09b50
    • Yedidya Feldblum's avatar
      Cut unnecessary library-local comment in SingletonThreadLocal · 7882c205
      Yedidya Feldblum authored
      Summary: [Folly] Cut unnecessary `library-local` comment in `SingletonThreadLocal`.
      
      Reviewed By: djwatson
      
      Differential Revision: D7316088
      
      fbshipit-source-id: 08b8634b2f0d32776d548115109bc65732e4c880
      7882c205
    • Yedidya Feldblum's avatar
      Cut SingletonThreadLocal::getWrapperInline · 10a9dadf
      Yedidya Feldblum authored
      Summary:
      [Folly] Cut `SingletonThreadLocal::getWrapperInline`.
      
      It would not be useful in any scenario, given that the generated code is very large.
      
      Reviewed By: djwatson
      
      Differential Revision: D7315501
      
      fbshipit-source-id: 1ebc15ca0eaf13adaf52fae3971e7f9914bfe10e
      10a9dadf
  2. 19 Mar, 2018 9 commits
    • Steve O'Brien's avatar
      folly/IOBuf: remove expensive boost header + implement iterator · 9885dc08
      Steve O'Brien authored
      Reviewed By: yfeldblum
      
      Differential Revision: D7272553
      
      fbshipit-source-id: f0aaa278e6a81a53f78ae29b68f1bf9f1ba02899
      9885dc08
    • Dan Melnic's avatar
      Use unbounded queue in NotificationQueue (same as in D7164130 but with the... · 2f9ee5b8
      Dan Melnic authored
      Use unbounded queue in NotificationQueue (same as in D7164130 but with the hazptr fix from D7256905 and the singleton one from D7283390)
      
      Summary: Use unbounded queue in NotificationQueue (same as in D7164130 but with the hazptr fix from D7256905 and the singleton one from D7283390)
      
      Reviewed By: yfeldblum
      
      Differential Revision: D7278275
      
      fbshipit-source-id: 78ea94e1c9d492febd33106b06ce275d4a90a56a
      2f9ee5b8
    • Nathan Bronson's avatar
      save 8 bytes and a bit of work in F14Vector{Map,Set} · a2aff3ba
      Nathan Bronson authored
      Summary:
      F14VectorMap and F14VectorSet use ItemIter to interact with F14Table,
      but they don't actually need to be able to identify the begin ItemIter.
      This diff removes both the storage for packedBegin_ and the code to
      update it (present in all insert and erase functions) for that policy.
      This is a small CPU optimization, and reduces sizeof(F14Vector{Map,Set})
      from 32 bytes to 24.
      
      Reviewed By: shixiao
      
      Differential Revision: D7181769
      
      fbshipit-source-id: 318c63584543fca339a002d8bcb5872a7bd0bdd3
      a2aff3ba
    • Erik Hortsch's avatar
      Check that fiber suspends are not occuring in exception catch blocks · bfdcacf9
      Erik Hortsch authored
      Summary:
      Fiber suspends are incompatible with C++ exception handling. We should enforce that callers are not suspending fibers while handling exceptions.
      See https://fb.facebook.com/groups/560979627394613/permalink/1119586164867287/
      
      NOTE: This check currently fires not just for baton.wait() (and all things based on baton), but also for calling runInMainContext. I'm unsure of the safety of this.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D6695110
      
      fbshipit-source-id: cf36edbab9f0573cbf639bf79d0c267681ac5914
      bfdcacf9
    • Neel Goyal's avatar
      Rename set/getServiceIdentity · 169e1f02
      Neel Goyal authored
      Summary: Rename set/getServiceIdentity to set/getSessionKey.  This is a more representative description since verified information is in the cert.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D7184169
      
      fbshipit-source-id: c9404419cb37d2b5ab2fcd8299975e514e3f495a
      169e1f02
    • Yedidya Feldblum's avatar
      Move folly/UncaughtExceptions.h to folly/lang/ · 0893755f
      Yedidya Feldblum authored
      Summary:
      [Folly] Move `folly/UncaughtExceptions.h` to `folly/lang/`.
      
      (Note: this ignores all push blocking failures!)
      
      Reviewed By: andrewjcg
      
      Differential Revision: D7319259
      
      fbshipit-source-id: 38d47503e150e01b5e4bcded6c8207484048bf84
      0893755f
    • Asier Gutierrez's avatar
      Missing installation of detail/Singleton.h · 2023e794
      Asier Gutierrez authored
      Summary:
      Makefile does not install detail/Singleton.h, which is needed by proxygen
      Closes https://github.com/facebook/folly/pull/804
      
      Reviewed By: andrewjcg
      
      Differential Revision: D7320496
      
      Pulled By: yfeldblum
      
      fbshipit-source-id: 8c576fe53be8292fa51a3db50dcfaa1d1cb13b6a
      2023e794
    • Yedidya Feldblum's avatar
      Tweaks to folly/TokenBucket.h · fb0c95ee
      Yedidya Feldblum authored
      Summary:
      [Folly] Tweaks to `folly/TokenBucket.h`.
      
      * No custom clock wrapper - just use the clock interface directly.
      * Rename from `Parameterized` to `Basic`.
      
      Reviewed By: andrewjcg
      
      Differential Revision: D7319361
      
      fbshipit-source-id: 1a7d8761e58f5f9b06dd8fdf5f7916913354c3b9
      fb0c95ee
    • Yedidya Feldblum's avatar
      Tests for throw_exception · b1da501d
      Yedidya Feldblum authored
      Summary:
      [Folly] Tests for `throw_exception`.
      
      Currently, only for platforms with exceptions.
      
      Reviewed By: andrewjcg
      
      Differential Revision: D7319127
      
      fbshipit-source-id: 689cf68d45619eddbbda6a4c36226fc7695c1243
      b1da501d
  3. 18 Mar, 2018 1 commit
    • Yedidya Feldblum's avatar
      Let SingletonThreadLocal no longer depend on Singleton · c84a82a6
      Yedidya Feldblum authored
      Summary:
      [Folly] Let `SingletonThreadLocal` no longer depend on `Singleton`.
      
      After recent changes, the dependency was only for `DefaultTag` and `DefaultMake`, not for `Singleton` or `LeakySingleton` itself. So extract the two small types to a small detail header, and split.
      
      Reviewed By: ot
      
      Differential Revision: D7300727
      
      fbshipit-source-id: 5ccfc0abff7dbb8c2c9ea83fb9bb3a085904ce58
      c84a82a6
  4. 17 Mar, 2018 3 commits
    • Qinfan Wu's avatar
      Include Portability.h before using FOLLY_HAS_COROUTINES · 7f696fbd
      Qinfan Wu authored
      Summary: [Folly][coro] Include `Portability.h` before using `FOLLY_HAS_COROUTINES`.
      
      Reviewed By: Orvid
      
      Differential Revision: D7315956
      
      fbshipit-source-id: 65490ced2573652e346c54aca4e67350fe3579fe
      7f696fbd
    • Orvid King's avatar
      Re-write the pthread thread-local storage portability layer to be backed by Boost · fe4fcdc9
      Orvid King authored
      Summary:
      Boost handles ensuring destruction order is correct far better than the implementation previously being used.
      This gets the Windows build working again, as it's currently hitting a thread-local static destruction order issue. Specifically, the thread_local containing the backing map for the portability implementation was being destroyed before a thread_local in rcu, which caused attempts to access thread local values that had already been freed.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D7312978
      
      fbshipit-source-id: 4d7f1f4d8bb0b92e0c52366078ee7ee34c4248f2
      fe4fcdc9
    • Qinfan Wu's avatar
      Disable CoroTest for gcc builds · 829d362d
      Qinfan Wu authored
      Summary: [Folly][coro] Disable CoroTest for gcc builds.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D7314274
      
      fbshipit-source-id: 06747135350001b55d6ce95e1ce4bf738fca0227
      829d362d
  5. 16 Mar, 2018 8 commits
    • Neel Goyal's avatar
      Add peer identity interface to AsyncTransport · 25702fca
      Neel Goyal authored
      Summary: Add a generic Identity class to AsyncTransport that applications are free to implement to convey identity information for both self and peer.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D7177085
      
      fbshipit-source-id: f1dcd9bb2dbf57751fe7ef0608663ddc1d527b92
      25702fca
    • Qinfan Wu's avatar
      Enable tests and fix build · ca53d920
      Qinfan Wu authored
      Summary: [Folly][coro] Enable tests and fix build.
      
      Reviewed By: yfeldblum, modocache
      
      Differential Revision: D7304801
      
      fbshipit-source-id: 0975201a0521cf8275d82ee6aaebfa02986c5b79
      ca53d920
    • Xiao Shi's avatar
      separate out F14_VECTOR_INTRINSICS_AVAILABLE check · 4c12379d
      Xiao Shi authored
      Summary:
      This check is useful for other platforms and in other context where F14 is
      included. For the sake of fast compilation, separate this macro out so that one
      doesn't have to pull in the entire F14Map/Set headers to use this macro.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D7300144
      
      fbshipit-source-id: d1aeb7e3c5d2f15703dd356fc54622751e3fa71a
      4c12379d
    • Steve O'Brien's avatar
      folly/String: drop unneeded type_traits header · faed3cec
      Steve O'Brien authored
      Summary: Unneeded header in frequently-used file; drop it
      
      Reviewed By: yfeldblum
      
      Differential Revision: D7165040
      
      fbshipit-source-id: b60a3cdf924ab93961a7ead3ac0653a2339a4faf
      faed3cec
    • Steve O'Brien's avatar
      remove expensive boost header from EventBase · 5e420c8c
      Steve O'Brien authored
      Summary: Removing expensive, unneeded includes (esp. Boost includes) gradually.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D7144471
      
      fbshipit-source-id: b568ec75251d360a72e7fa2d656ab9463b5a4728
      5e420c8c
    • Yanan Xin's avatar
      Add getTaskQueueSize() method in CPUThreadPoolExecutor · c3ec0bd2
      Yanan Xin authored
      Summary: Add getTaskQueueSize() method in CPUThreadPoolExecutor
      
      Reviewed By: yfeldblum
      
      Differential Revision: D7294802
      
      fbshipit-source-id: 1f37558a1f14fcc2888c654248d649365c323432
      c3ec0bd2
    • Orvid King's avatar
      Fix the build on Windows due to MTU_DISCOVER · 131cbd22
      Orvid King authored
      Summary: Windows defines `IP_MTU_DISCOVER`, but does it differently from everywhere else, so disable it unless everything required is defined.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D7298640
      
      fbshipit-source-id: 8ecc2dfd9ba83f31e9d72e0f42fb4fbf8f3e50b5
      131cbd22
    • Nathan Bronson's avatar
      switch from assert to FOLLY_SAFE_DCHECK · de02e37f
      Nathan Bronson authored
      Summary:
      assert(x) doesn't mark x as used in prod builds, causing problems
      for builds that warn on unused variables and promote warnings to errors.
      This diff changes assert calls to FOLLY_SAFE_DCHECK, which is better in
      this regard.
      
      Reviewed By: phoad, shixiao
      
      Differential Revision: D7291084
      
      fbshipit-source-id: 1ae48a271f30182ac8a1c2cf126af0e6b4fd0a25
      de02e37f
  6. 15 Mar, 2018 6 commits
    • Yedidya Feldblum's avatar
      Alias std::launder on MSVC · 79778122
      Yedidya Feldblum authored
      Summary:
      [Folly] Alias `std::launder` on `MSVC` to avoid ambiguity.
      
      Fixes #802.
      
      Reviewed By: Orvid
      
      Differential Revision: D7286052
      
      fbshipit-source-id: 7cd89c9ad236a433f53fbdb9e2e024b85105827e
      79778122
    • Yedidya Feldblum's avatar
      Fix SingletonThreadLocal use from headers · d4ec31ab
      Yedidya Feldblum authored
      Summary:
      [Folly] Fix `SingletonThreadLocal` use from headers included by separate dynamically-loaded modules.
      
      There is no need in `SingletonThreadLocal` specifically to check for double-registration and `SingletonThreadLocal` does not support mocks, so `LeakySingleton` may be bypassed entirely.
      
      Reviewed By: djwatson
      
      Differential Revision: D7283390
      
      fbshipit-source-id: 45295c4dab233b9373ed32a47d4c80832b0f9eff
      d4ec31ab
    • Dave Watson's avatar
      Use EXPEDITED by default · b07974cc
      Dave Watson authored
      Summary:
      MEMBARRIER_CMD_SHARED is too slow, use EXPEDITED (or the mprotect hack if kernel is too old).
      
      hazptr has been using EXPEDITED for a while, the only other users are RCU and read_mostly_shared_ptr
      
      Reviewed By: yfeldblum, osandov
      
      Differential Revision: D7280190
      
      fbshipit-source-id: 2a9aeab035f8996566b557d7f406686c361a37d7
      b07974cc
    • Yang Zhang's avatar
      Add constexpr_add/sub_overflow_clamped in folly/ConstexprMath.h · 4989422c
      Yang Zhang authored
      Summary: Provide UBSAN-clean add/sub function on integral types. Helps to avoid overflow.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D7230723
      
      fbshipit-source-id: 10fa54b405f9643dfbbb1940cf100516fd1341e1
      4989422c
    • Alexander Blom's avatar
      Make EventBase extend ScheduledExecutor · a1699e9f
      Alexander Blom authored
      Summary:
      This makes it easier to use EventBase in cases where
      classes require ScheduledExecutor instead of Executor. Previously
      the client would have to implement a wrapper around EventBase.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D7179869
      
      fbshipit-source-id: 21730a56ed5b71fd731ffd272f9f3752b70d63ce
      a1699e9f
    • Xiao Shi's avatar
      expose Default{Hasher, KeyEqual, Alloc} to platforms without intrinsics available · 8579ad47
      Xiao Shi authored
      Summary: Expose Default{Hasher, KeyEqual, Alloc} to platforms without intrinsics available
      
      Reviewed By: yfeldblum
      
      Differential Revision: D7277896
      
      fbshipit-source-id: 92f46aef9ab0926c32c85e29e368f7c0b58c2b3e
      8579ad47
  7. 14 Mar, 2018 7 commits
    • Nathan Bronson's avatar
      add __builtin_ctz and __builtin_ctzl · 9cf96558
      Nathan Bronson authored
      Summary: Add missing WIN32 compat builtins
      
      Reviewed By: Orvid
      
      Differential Revision: D7276240
      
      fbshipit-source-id: 094c0861126b3477e9112987f033edacbde4aca4
      9cf96558
    • Tom Jackson's avatar
      eachTryTo, takeWhile · 3c047a7b
      Tom Jackson authored
      Reviewed By: yfeldblum
      
      Differential Revision: D7257019
      
      fbshipit-source-id: 2fe54fe1d42bfe81b2f6f8e43ae0f7e738e93edd
      3c047a7b
    • Dave Watson's avatar
      Fix fork behavior · 608edf73
      Dave Watson authored
      Summary:
      hazptr_priv_list needs to be reinitialized on fork, as well as ODR violations.
      
      This broke stuff when trying to land D7164130
      
      TL;DR the thread_locals need to be in a .cpp file, the templates don't always get merged correctly, especially in the face of dlopen.
      
      You can, however, use a thread_local * pointer cache to the object.  This is basically what folly::SingletonThreadLocal does.
      
      Folly's ThreadLocal runs destructors when forking even too, so nothing special is required.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D7256905
      
      fbshipit-source-id: c817167b5c3db27fa929feaa39295fd939c1cb4c
      608edf73
    • Xiao Shi's avatar
      lift Default{Hasher, KeyEqual, Alloc} out of detail namespace · bb5932ed
      Xiao Shi authored
      Summary:
      Expose the default structs in `folly::f14` namespace so that users _could_
      potentially refer to them.
      
      Reviewed By: nbronson
      
      Differential Revision: D7271846
      
      fbshipit-source-id: 81a193209e59ed80260098ed97c99a7b6f2ad151
      bb5932ed
    • Yedidya Feldblum's avatar
      Parameterize AlignedSysAllocator by a policy · d277c610
      Yedidya Feldblum authored
      Summary: [Folly] Parameterize `AlignedSysAllocator` by a policy.
      
      Reviewed By: ot
      
      Differential Revision: D7246946
      
      fbshipit-source-id: 5b6a89707c242e49bdbafba9dec6df4c65ef385c
      d277c610
    • Bennett Magy's avatar
      Added forward declaration of ObserverCreator · 2195ec35
      Bennett Magy authored
      Summary:
      For some reason, compilation of certain Observable code fails in opt mode with the error that Observer::core_ is private.
      
      It seems that ObserverCreator is not recognized as a friend of Observer. This forward declaration of ObserverCreator seems to fix this issue.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D7268318
      
      fbshipit-source-id: 1ea76efb0f50cb8a6b28147305ec7547f55338b8
      2195ec35
    • Yedidya Feldblum's avatar
      Enable -Wunused-value · aab80ef3
      Yedidya Feldblum authored
      Summary: [Folly] Enable `-Wunused-value`.
      
      Reviewed By: Orvid
      
      Differential Revision: D7266246
      
      fbshipit-source-id: dc9b85a5f8ce67802cc2fa94746a26529012ec22
      aab80ef3