- 15 Mar, 2018 5 commits
-
-
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
-
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
-
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
-
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
-
Xiao Shi authored
Summary: Expose Default{Hasher, KeyEqual, Alloc} to platforms without intrinsics available Reviewed By: yfeldblum Differential Revision: D7277896 fbshipit-source-id: 92f46aef9ab0926c32c85e29e368f7c0b58c2b3e
-
- 14 Mar, 2018 8 commits
-
-
Nathan Bronson authored
Summary: Add missing WIN32 compat builtins Reviewed By: Orvid Differential Revision: D7276240 fbshipit-source-id: 094c0861126b3477e9112987f033edacbde4aca4
-
Tom Jackson authored
Reviewed By: yfeldblum Differential Revision: D7257019 fbshipit-source-id: 2fe54fe1d42bfe81b2f6f8e43ae0f7e738e93edd
-
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
-
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
-
Yedidya Feldblum authored
Summary: [Folly] Parameterize `AlignedSysAllocator` by a policy. Reviewed By: ot Differential Revision: D7246946 fbshipit-source-id: 5b6a89707c242e49bdbafba9dec6df4c65ef385c
-
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
-
Yedidya Feldblum authored
Summary: [Folly] Enable `-Wunused-value`. Reviewed By: Orvid Differential Revision: D7266246 fbshipit-source-id: dc9b85a5f8ce67802cc2fa94746a26529012ec22
-
Nathan Bronson authored
Summary: F14 was missing the MSVC portability shims, and also needs to use an MSVC-specific intrinsic to get the high word of a 64-bit multiply. Reviewed By: yfeldblum Differential Revision: D7263349 fbshipit-source-id: f47ceb2b2370d9bef1409e4790b236752c9f6ac4
-
- 13 Mar, 2018 9 commits
-
-
Paul Jewell authored
Summary: Currently, an error is thrown if a user tries to hash an instance of `folly::dynamic` which is of type `object` or `array`. Primitive underlying types are fine. There doesn't seem to be a strict reason for this, as objects and arrays are just as hashable as primitive types. Additionally, the inability to hash here causes some unnecessary drawbacks (e.g. interacting with `unordered_map`s). This diff uses the existing dependency on `folly/hash/Hash.h` to start allowing `folly::dynamic` objects/arrays to be hashed as well. Reviewed By: ot Differential Revision: D7219760 fbshipit-source-id: 1dff3f99bdacb66f719c614040cbd668ce51a33e
-
Fengyang Wang authored
Summary: EventBase meets the definition of IOExecutor (it is an executor that "manages" at least one EventBase) and is already claimed to be one in the docstring. Reviewed By: yfeldblum Differential Revision: D7064481 fbshipit-source-id: 026e0e4c24d6fb15a32bc4772b35689f830ed944
-
Lee Howes authored
Summary: deferError adds an error handling callback to SemiFuture, enqueued on the internal deferred executor, and thus will run on the chained executor or inline with .get() as for defer. Reviewed By: yfeldblum Differential Revision: D7243193 fbshipit-source-id: 9fe7dab9fbc8b236d717b058c81a303d87fa9253
-
Nathan Bronson authored
Summary: F14 is a 14-way probing hash table that resolves collisions by double hashing. Up to 14 keys are stored in a chunk at a single hash table position. SSE2 vector instructions are used to filter within a chunk; intra-chunk search takes only a handful of instructions. "F14" refers to the fact that the algorithm "F"ilters up to "14" keys at a time. This strategy allows the hash table to be operated at a high maximum load factor (12/14) while still keeping probe chains very short. F14 provides compelling replacements for most of the hash tables we use in production at Facebook. Switching to it can improve memory efficiency and performance at the same time. The hash table implementations widely deployed in C++ at Facebook exist along a spectrum of space/time tradeoffs. The fastest is the least memory efficient, and the most memory efficient is much slower than the rest. F14 moves the curve, simultaneously improving memory efficiency and performance when compared to the existing algorithms, especially for complex keys and large maps. Reviewed By: yfeldblum Differential Revision: D7154343 fbshipit-source-id: 42ebd11b353285855c0fed5dd4b3af4620d39e98
-
Lee Howes authored
Summary: This avoids ambiguity with an auto-parameterised lambda and leads on to a consistent use of deferError in a followup diff. Reviewed By: yfeldblum Differential Revision: D7224490 fbshipit-source-id: df410cd97ca0991db8fcb46267dd6a4236f3f6a3
-
Asier Gutierrez authored
Summary: When compiling using autoconf, automake, make and make install, SequencedExecutor.h is not installed automatically. Closes https://github.com/facebook/folly/pull/799 Reviewed By: meyering Differential Revision: D7241820 Pulled By: yfeldblum fbshipit-source-id: 03c608c8ece2e7870a7bacce399ecc9455691948
-
Giuseppe Ottaviano authored
Reviewed By: djwatson Differential Revision: D7251343 fbshipit-source-id: e5ce0c897f0d96c8717d544ac98a1faf12f08c02
-
Yedidya Feldblum authored
Summary: [Folly] Suppress `-Wshadow-compatible-local` in `folly/test/stl_tests/StlVectorTest.cpp`. That test source file is heavily macro-driven, and using `SCOPED_TRACE` repeatedly in macros can lead to violations of `-Wshadow-compatible-local`. Reviewed By: meyering Differential Revision: D7231029 fbshipit-source-id: 122e1d86032cf884a83ef1716fa48b8f4864a363
-
Mingtao Yang authored
Summary: For compatiblity with `openssl errstr`. Reviewed By: yfeldblum Differential Revision: D7246053 fbshipit-source-id: dcf77b67ae3b3dd7b6b85e9b73f2d382e59aa7b9
-
- 12 Mar, 2018 6 commits
-
-
Dave Watson authored
Summary: Add try_wait_for and try_wait_until. Algorithm - We could use a doubly-linked list, but this would double the number of contended CAS for push/post. Instead, assume timeouts are infrequent, and just walk the list from the head to remove nodes. A lock bit is added to the head, which is taken only on timeout. We assume timeouts are infrequent. If a concurrent post() removes the node before the timeout can remove it, we must wait for the corresponding post() (but it is likely to arrive soon), instead of timing out. Reviewed By: magedm Differential Revision: D7167894 fbshipit-source-id: ea5242098d9ccd286a72fade6292223e95c44a81
-
Dan Melnic authored
Summary: Use unbounded queue in NotificationQueue Reviewed By: djwatson Differential Revision: D7164130 fbshipit-source-id: d1b445d6730cbb2a68ad78506abe0165e28f5811
-
Dan Melnic authored
Summary: Add folly::Optional<T> UnboundedQueue::try_dequeue() method Reviewed By: magedm Differential Revision: D7164049 fbshipit-source-id: 659de2d26067bb1a5bdea50f4cd7711e6955ba61
-
Dan Melnic authored
Summary: NotificationQueue benchmark Reviewed By: yfeldblum, djwatson Differential Revision: D7163944 fbshipit-source-id: f7fe2124b8c61ff3ab39be94d9c50c82a6f8816b
-
Yedidya Feldblum authored
Summary: [Folly] Fix `propagate_const` under gcc49. Reviewed By: andrewjcg Differential Revision: D7230851 fbshipit-source-id: 0cd4df15d5a0f7ae06e26a82ca725b30d479f458
-
Yedidya Feldblum authored
Summary: [Folly] Rewrite allocators for the era of `std::allocator_traits`. Provide minimal interfaces which comply with all required elements of C++ concept `Allocator`. Change all (*) uses to use `std::allocator_traits` consistently, as is required of all allocator-aware library types. * Rename `SysAlloc`. * Replace `StlAllocator` with `CxxAllocatorAdaptor` with stricter semantics. * `Arena` is no longer a C++ Allocator because it is not freely copyable. Change code which used it as a C++ Allocator to use `CxxAllocatorAdaptor` instead. * `ThreadCachedArena` likewise. (*) Hopefully. Reviewed By: nbronson Differential Revision: D7208794 fbshipit-source-id: 270588c9c3d817f4abd9fb49eed5eb9f03f96da2
-
- 10 Mar, 2018 3 commits
-
-
Yedidya Feldblum authored
Summary: [Folly] Cut dead iterator-traits `ifdef`s in `fbstring`. Reviewed By: elsteveogrande Differential Revision: D7195605 fbshipit-source-id: 7a398cffab153b1571064a7d9e610e844f33bc20
-
Lee Howes authored
Temporarily remove onError returning a future that completes on the original executor due to production issues. Summary: https://fb.facebook.com/groups/fbcode.investigations/permalink/407299856363159/ showed issues coming from this diff. The change to return an executor-tied future from onError was intentional, and correct behaviour, but it was a change that seems to have caused issues. Temporarily removing it to rethink how we should approach it. Reviewed By: andriigrynenko Differential Revision: D7219231 fbshipit-source-id: 95b91f3a5ea7d854d5df052e6cd5851c7e6fbdab
-
Andrii Grynenko authored
Reviewed By: phoad Differential Revision: D7220254 fbshipit-source-id: 3a2a49fd17d0aca4acc590c1c16db75ace472216
-
- 09 Mar, 2018 5 commits
-
-
Giuseppe Ottaviano authored
Summary: It currently only sets the lower 32 bits. Reviewed By: nbronson, philippv Differential Revision: D7216798 fbshipit-source-id: 090f6dba990eeb7f1a9cc56e8615161c11eea026
-
Nathan Bronson authored
Summary: This diff adds folly::IsAvalanchingHasher<H, K>, which identifies hash functors that exceed the standard's quality requirement by also being avalanching. This is useful for code that wants to map hash values onto a restricted range or compute a secondary hash value without doing extra work. Reviewed By: yfeldblum Differential Revision: D7180217 fbshipit-source-id: 8c402937d0a654c0ec32c62666e9dc4e0943f769
-
Nathan Bronson authored
Summary: This diff clang-formats a couple of files in preparation for additional changes. Reviewed By: yfeldblum, shixiao Differential Revision: D7197983 fbshipit-source-id: 8995bdaca29bcc44cd5379fc64c76cee89635ac1
-
Adam Simpkins authored
Summary: Update folly::initLogging() to call getBaseLoggingConfig() to get a base configuration string that is applied before the argument that it was called with. getBaseLoggingConfig() is defined as a weak symbol, and is intended to be overridden on a per-executable basis if desired. This allows individual programs to control their default logging settings, but still let them be overridden via a command line flag. The command line flag is used to update this base configuration. The command line flag can fully override all of the base configuration settings if desired, but settings from the base config that are not overridden will still be used. For example, if the base configuration defines settings for the categories "foo" and "bar", and the command line flag defines settings for the categories "bar" and "wub", the base configuration settings for "foo" will still be used. Reviewed By: yfeldblum Differential Revision: D7164832 fbshipit-source-id: e172f746d7bd004948872adbbb87c597765e283c
-
Andrii Grynenko authored
Reviewed By: yfeldblum Differential Revision: D7203193 fbshipit-source-id: 440daa2f79a919aa95ae3fdb4006f8d501c0ad93
-
- 08 Mar, 2018 4 commits
-
-
Kostia Balytskyi authored
Summary: This just extends D4988025 to one more location, which wasn't covered in the initial fix. Reviewed By: yfeldblum Differential Revision: D7181160 fbshipit-source-id: 8dd0866d916674870f04252a80725ecce0cd69e1
-
Nathan Bronson authored
Summary: folly::hasher<T> for integral and floating point types T uses a different algorithm depending on the key type. At the moment this is taken from the actual argument type, rather than the explicitly provided one. This is likely to be confusing. Reviewed By: yfeldblum Differential Revision: D7194941 fbshipit-source-id: efa3e4bbad62e53842ec6fb80d316706324e98aa
-
Dave Watson authored
Summary: There is currently an unnecessary data dependency loading the current backing buckets + size, reading the size, then again indexing in to the array. Rework the Buckets struct to make a single allocation, and store the bucket_count_ in the Segment directly. The bucket pointer and segment are protected by a seqlock. Reviewed By: ot Differential Revision: D7167919 fbshipit-source-id: 10ddceffad19f54c790b3ab7a87260445571f81d
-
Sarang Masti authored
Summary: Allow passing in a custom comparator to compare keys Reviewed By: yfeldblum, aary Differential Revision: D7175777 fbshipit-source-id: e1e8d836a908b595a74b172b04ca847a5c5eb435
-