- 10 Mar, 2018 1 commit
-
-
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 8 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
-
Mark Williams authored
Summary: The range check to identify its "own" memory could inadvertently pick up an allocation from outside the range, resulting in an alignment assertion later on, and causing us to permanently leak the memory (when assertions are disabled). Reviewed By: alikhtarov, andriigrynenko Differential Revision: D7146394 fbshipit-source-id: d9d8b63eea1ffa045e1bd07c0258d1f2b089e9bf
-
Lee Howes authored
Summary: Modify folly::window to replace Promise::getFuture calls with Promise::getSemiFuture. The requirement for an executor on the semifuture here meant that I had to modify all of the SemiFutures with an executor in the vector. This may come with a small performance hit in some cases, but appears to be behaviourally better. Reviewed By: yfeldblum Differential Revision: D7104920 fbshipit-source-id: 7d105df553c28bb362b37ff64270ee16bf59fbd6
-
Lee Howes authored
Summary: There was previously a bug in that defer used within a continuation would not correctly chain the deferred executor on the executor in the returned (and hence in the original) folly::Future like it would when .via was called on a SemiFuture. This fixes that situation by returning a semifuture from a continuation by correctly chaining it onto the outer future's executor. Reviewed By: yfeldblum Differential Revision: D7156241 fbshipit-source-id: ed6db3ad0de7a921b72459fcd2b1228114832853
-
Lee Howes authored
Add getSemiFuture and storage of executor to FutureSplitter so that returned future completes on the expected executor. Summary: Remove calls to Promise::getFuture in FutureSplitter test. Add getSemiFuture to FutureSplitter for consistency with Promise. Keep getFuture method but ensure that it completes on the same executor as the input future (or Inline if the executor on the input future was null, due to legacy code). Reviewed By: yfeldblum Differential Revision: D7105806 fbshipit-source-id: 63a919ba9dcf0f189782a3e2a362fad4d86ac91f
-
Yedidya Feldblum authored
Summary: [Folly] Fix waiting in `Baton`, `SaturatingSemaphore`. If condition passes or overall deadline expires, just return. If only a component timeout expires, continue on to the next component. Reviewed By: magedm Differential Revision: D7151564 fbshipit-source-id: 48c33ccc6970604b23221bc94af247945bdc34e5
-
Lee Howes authored
Summary: Replaces calls to Promise::getFuture in onError calls. Modifies the returned future to complete on the same executor as the caller. No assumption that the future already has an executor (though it should in principle, the codebase is not ready for that yet). Reviewed By: yfeldblum Differential Revision: D7104850 fbshipit-source-id: ea152102f8ecd612e322b98a54d9440495b14bf8
-
- 05 Mar, 2018 7 commits
-
-
Igor Sugak authored
Summary: UndefinedBehaviorSanitizer: invalid-null-argument folly/io/IOBufQueue.cpp:53:38 ``` Add a check that the length is greater than zero. Reviewed By: meyering Differential Revision: D7139027 fbshipit-source-id: 37585092429af52d14c98c193ecc495752bbda1c
-
Andrii Grynenko authored
Summary: This implements Executor-aware coroutine library. Reviewed By: wqfish Differential Revision: D7133189 fbshipit-source-id: 43022e0b4a44378dae670720d8144f2e042f1a54
-
Gustavo Stor authored
Summary: Strings terminating in a backslash shouldn't throw if strict is set to false. However, the default implementation results in an undefined behavior, since the iterator goes beyond the end position of the string. Reviewed By: simpkins Differential Revision: D7123155 fbshipit-source-id: 4311037ccdbfd95f402109dcc1b5862e52fb97a1
-
Yedidya Feldblum authored
Summary: [Folly] Fix waiting in `UnboundedQueue::dequeue` suite. `SaturatingSemaphore::try_wait_until` does not return early with the result `false`, so the loop could result in incorrect long waits. Reviewed By: magedm Differential Revision: D7151562 fbshipit-source-id: cd90583f0b4520464ed1877df8396df43ebbef00
-
Yedidya Feldblum authored
Summary: [Folly] Simplify `MemoryIdler` pre-idle check. Reviewed By: magedm Differential Revision: D7151565 fbshipit-source-id: 34ae69f16439640669cd9aaf02a09282a1a1cc3f
-
Yedidya Feldblum authored
Summary: [Folly] An extra deadline check in `DynamicBoundedQueue` enqueue path just for completeness. Reviewed By: magedm Differential Revision: D7151563 fbshipit-source-id: 2d6abd906091db20a650d0f3120bf4b1d8bcf00c
-
Yedidya Feldblum authored
Reviewed By: igorsugak Differential Revision: D7078903 fbshipit-source-id: 13cdc49369f24cdadc3f9405d1ce609a79ff8988
-
- 04 Mar, 2018 1 commit
-
-
Xiao Shi authored
Summary: Adding a few other data structures to the benchmark. Code clean-up: * split `insert` into `insertFront` and `pushBack` * delete current `erase` benchmark, which is mostly spinning since `iters` can easily be larger than the original vector size. Reviewed By: yfeldblum Differential Revision: D7067000 fbshipit-source-id: 3073f7c396888787b49993468c7e6fdac70b77ac
-
- 03 Mar, 2018 3 commits
-
-
Yedidya Feldblum authored
Summary: [Folly] Remove the spin-lock protecting `Future`'s executor. The executor can be set in a few places: * When constructing a new `Promise` and `Future` pair before handing off the `Promise` in `Future::thenImplementation`. * After invoking `SemiFuture::wait` and `Future::wait` in the non-timeout case. * In `SemiFuture` dtor, if it has a core. In the first case, the executor is set in the future thread before being read by the promise thread. In the second case, the executor is set after being read by the promise thread. In the third case, if there is a core, then no callback could have been attached. But there is no race between setting and reading. Reviewed By: djwatson Differential Revision: D7115700 fbshipit-source-id: 5a0f90a9f01a7dcf295f39d323959e91aeae26da
-
Andrii Grynenko authored
Summary: This reverts commit bf3e2b8f4a086f1786ab46f453c3dd9171d018e8 bypass-lint An infra SEV is better than not reverting this diff. If you copy this password, see you in SEV Review! cause_a_sev_many_files Differential Revision: D7130814 Original commit changeset: bf3e2b8f4a08 fbshipit-source-id: 8f67c9ec365853f8fbc736e0fd29133fd7653a59
-
Xiao Shi authored
Summary: C++17 defined integer traits for `__int128` as well as a (trivial) std::hash, this diff adds the check in `FOLLY_SUPPLY_MISSING_INT128_TRAITS`. There was an unintended linebreak in the cmake test which rendered it non functional. This diff fixes it. Original issue: https://github.com/facebook/folly/commit/b2b96f59c57cd7aba686cc4f61ceba0314cdeb72#comments Reviewed By: yfeldblum Differential Revision: D7138006 fbshipit-source-id: ca1841b9ca847f1f6570b58e95380f50fe092345
-
- 02 Mar, 2018 4 commits
-
-
Giuseppe Ottaviano authored
Summary: From http://en.cppreference.com/w/cpp/string/basic_string/at > Throws std::out_of_range if pos >= size(). Furthermore it was inconsistent between the `const` and non-`const` version. (Note: this ignores all push blocking failures!) Reviewed By: philippv, luciang Differential Revision: D6355911 fbshipit-source-id: 54acbba791fc5a8aeb4fdf46e786f8519fd18701
-
Lee Howes authored
Summary: Replace calls to Promise::getFuture in waitImpl with getSemiFuture. There is a slight behavioural change here in that we now set the executor on the returned future, but this appears to be the correct behaviour. Reviewed By: yfeldblum Differential Revision: D7104627 fbshipit-source-id: fd19c3f6884b560f7d5ea1276f3c80c082dfc53d
-
Nathan Bronson authored
Summary: SharedMutex asserts that all locks have been released before destruction. This diff adds a comment near those asserts making it more clear what they are checking. Reviewed By: yfeldblum Differential Revision: D7137906 fbshipit-source-id: 082a804616950d9a962ee932c9021c453f43a35d
-
Brian Gesiak authored
Summary: Suspending the coroutine before it's destroyed prevents a dangling reference to its value. This dangling reference is exposed when running tests that were built with `-O3` with ASAN. To run tests at this level, split the tests up: move tests that cannot be compiled with ASAN at `-O3`, due to https://bugs.llvm.org/show_bug.cgi?id=34289, into their own file. The remaining tests stay where they are, with `-O3` re-enabled. Reviewed By: yfeldblum Differential Revision: D7130814 fbshipit-source-id: bf3e2b8f4a086f1786ab46f453c3dd9171d018e8
-