- 14 Mar, 2018 4 commits
-
-
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
-
- 07 Mar, 2018 7 commits
-
-
Adam Simpkins authored
Summary: Add ConfigHelpers.cpp to the folly_test_support library. This was accidentally broken in D7164831, but wasn't caught due to infrastructure errors kicking off the continuous OSS builds. Reviewed By: yfeldblum Differential Revision: D7186076 fbshipit-source-id: f13bdd920bb289ae19fdb46e265123fe088b42c3
-
Adam Simpkins authored
Summary: This method can be used to get configuration about all currently defined log categories, including ones that are using the default config settings. The existing LoggerDB::getConfig() method only returns information about categories that have non-default config settings. Reviewed By: yfeldblum Differential Revision: D7164833 fbshipit-source-id: e1c043553dc4f69be58c33f2bc5b1a63763f0984
-
Qinfan Wu authored
Summary: [Folly][coro] Suppress deprecation warning in `Promise.h`. `Try(std::exception_ptr ep)` is deprecated. The underlying behavior doesn't improve much with this diff. But there would be a whole lot of warnings once `Promise.h` gets included by more files. Reviewed By: andriigrynenko Differential Revision: D7178381 fbshipit-source-id: 9f45706283a5aaa436cbab3e7b02e085bdc8c792
-
Qinfan Wu authored
Summary: [Folly][coro] Let all `Promise<T>` be friend of `Task`. The code would not compile: ```lang=c++ coro::Task<void> taskVoid() { co_await task42(); co_return; } ``` ``` folly/experimental/coro/Promise.h:84:28: error: 'viaInline' is a private member of 'folly::coro::Task<int>' return std::move(task).viaInline(executor_); ^ folly/experimental/coro/tests/CoroTest.cpp:40:3: note: in instantiation of function template specialization 'folly::coro::Promise<void>::await_transform<int>' requested here co_await task42(); ^ folly/experimental/coro/Task.h:60:13: note: declared private here Future<T> viaInline(folly::Executor* executor) && { ^ ``` Reviewed By: andriigrynenko Differential Revision: D7178238 fbshipit-source-id: 7dca6834ac56f4c9bdb4d702996b51e932f2aae6
-
Adam Simpkins authored
Summary: Move some utility functions from ConfigParserTest and ConfigUpdateTest into a new ConfigHelpers module. This eliminates some duplicated logic and will make it easier to re-use these functions in other tests in the future. Reviewed By: yfeldblum Differential Revision: D7164831 fbshipit-source-id: 115a227e4cb2db486f57079483b8ae9aadaa0187
-
Adam Simpkins authored
Summary: Define a FOLLY_ATTR_WEAK helper macro in CPortability.h, and update existing code in folly that declares functions as weak to use this new macro. This will make it easier to declare weak functions in other files in the future. Reviewed By: yfeldblum Differential Revision: D7164834 fbshipit-source-id: 87e03401400f2912fcd5e719af0d667251cd642b
-
Adam Simpkins authored
Summary: Define interface include directories for the folly target. This lets downstream dependencies of folly list Folly::folly in target_link_libraries() and have the correct include directories be added automatically. Reviewed By: yfeldblum Differential Revision: D7162335 fbshipit-source-id: 2a6aad57142e038450fd35a94446f5b865029155
-
- 06 Mar, 2018 2 commits
-
-
Neel Goyal authored
Summary: Free up the session if its not null before assigning a new one Reviewed By: shamdor-fb Differential Revision: D7169809 fbshipit-source-id: fd026e8688525a764b9937c7f4b7bfb0cdece9eb
-
Lee Howes authored
Summary: toUnsafeFuture is intended to return a future that is the same as .via(&folly::InlineExecutor::instance()) without propagating InlineExecutor throughout future-using code during a transition to SemiFuture. This will highlight call sites better and encourage either fixing, or making clear that this non-deterministic behaviour is the intent. Reviewed By: yfeldblum Differential Revision: D7162989 fbshipit-source-id: c7092a53560e05d463d9170be254a50d23cc6ef7
-