- 08 Jun, 2018 3 commits
-
-
Tingzhe Zhou authored
Summary: Make the interface consistent with the other queue algorithms. push try_push try_push_for try_push_until pop try_pop try_pop_for try_pop_until peek try_peek try_peek_for try_peek_until Reviewed By: yfeldblum, djwatson Differential Revision: D8262170 fbshipit-source-id: 0299e947a0069eacafd1315c920ec6e1b36675f3
-
Andrii Grynenko authored
Summary: Weak reference can be used if it's ok for some tasks to be dropped when Executor is destroyed. Reviewed By: yfeldblum Differential Revision: D8309958 fbshipit-source-id: 8ecc86a8be181a9eb695aa12305b2a30b6f4b60e
-
Michael Park authored
Summary: Moved `Future::within` to `FutureBase::withinImplementation`, and changed it to return a `SemiFuture`. `SemiFuture::within` uses it directly, and `Future::within` uses it then attaches the current executor or falls back to the inline executor to preserve existing behavior. Reviewed By: yfeldblum Differential Revision: D8269907 fbshipit-source-id: 76e235a2ecb2c648603961d0ac0ac17bf646d027
-
- 07 Jun, 2018 3 commits
-
-
Yedidya Feldblum authored
Summary: [Folly] Support self-copy in `small_vector`. And refactor move-assignment to look like the fixed copy-assignment for symmetry. Reviewed By: Ahmed-Salama Differential Revision: D8321122 fbshipit-source-id: 2c8b26ad6c4e538266082df29276b827cf4505fc
-
Xiao Shi authored
Summary: When vector intrinsics are not available, `visitAllocationClasses` fails to compile as it is a member function of a template class and it invokes a member function of a template base class without explicit `this->`. Reviewed By: yfeldblum, nbronson Differential Revision: D8300168 fbshipit-source-id: 1c1619bd1c864535648e531b218d2cf1ffef767b
-
Alexander Blom authored
Summary: VLOG(1) shows up in Android logs, which is annoying as some of our tools try to repeatedly connect. Reviewed By: yfeldblum Differential Revision: D8297987 fbshipit-source-id: 45cf4320d2e2fcf570117fee6aef133b2d9986e6
-
- 06 Jun, 2018 4 commits
-
-
Caleb Marchent authored
Summary: There is no guarantee that the default branch in git is 'master'; so unless specified we checkout a tag along the 'dev' branch, which is not intended as it is the master branch that tracks releases for Zstd. Reviewed By: jstrizich Differential Revision: D8297843 fbshipit-source-id: 8497dc75c399ae7c86e27b28fdb73898ef4b1a4e
-
Michael Park authored
Summary: `s/Future/SemiFuture/` on `SemiFuture` ctor and fixed typo `s/Timeekeeper/Timekeeper/`. Reviewed By: yfeldblum Differential Revision: D8290658 fbshipit-source-id: 99ddbdecc0302e620bd2b4ebce74c6080cf81aec
-
Lee Howes authored
Make Future<T>::delayed complete on correct executor 5/n: Add back Future::delayed with correct behaviour Summary: Overall plan to modify Future<T>::delayed to complete on the same executor as the input future. [folly::Futures] Make Future<T>::delayed complete on correct executor 5/n: * Add back future::delayed. * Have Future::delayed complete on input executor. * r-value qualify Future::delayed Reviewed By: yfeldblum, marshallcline Differential Revision: D8238220 fbshipit-source-id: 79afa8cc9a9fe588609ad186ad62f714ee322f7d
-
Yedidya Feldblum authored
Summary: [Folly] Let `Sychronized` move-constructor not lock the source object, since it is an rvalue-reference and the move-constructor code may therefore be assumed to have the only live reference to the source. Same with the move-assignment operator. Reviewed By: aary Differential Revision: D8219883 fbshipit-source-id: f62ff87197ac4b9ceed290a73a05062ab8ed45c4
-
- 05 Jun, 2018 5 commits
-
-
Felix Handte authored
Summary: Reusing a context can provide significant efficiency benefits. Depends on D8172871. Reviewed By: yfeldblum, terrelln Differential Revision: D8287767 fbshipit-source-id: 2565e7a959b2ac0911f0a4d6e1596f9da6d12ee8
-
Felix Handte authored
Summary: Reusing a context can provide significant efficiency benefits. Depends on D8172801. Reviewed By: yfeldblum, terrelln Differential Revision: D8172871 fbshipit-source-id: f92c85410a35643502d28922583ee0ed0b4386c9
-
Neel Goyal authored
Summary: Clear/read OpenSSL errors after certain ops. Reviewed By: mingtaoy Differential Revision: D8277088 fbshipit-source-id: aa436657c3bca3a081cd56858e09da57a03cda05
-
Dan Melnic authored
Summary: Use static FOLLY_TLS ThreadEntry to avoid an ASAN deadlock due to new after fork Reviewed By: philippv Differential Revision: D8272580 fbshipit-source-id: e2dc069e81d15f14be9f96a26d30de7482ced0cf
-
Sergey Zhupanov authored
Summary: Replaced boost::algorithm::to_lower() with std::transform() Reviewed By: yfeldblum Differential Revision: D8264760 fbshipit-source-id: f6faa46c0bbced3a08c02b93eacbb58eb6927890
-
- 04 Jun, 2018 4 commits
-
-
Nick Terrell authored
Summary: * One function needed renaming * One bug needed to be worked around (content size defaulting to 0) Reviewed By: yfeldblum Differential Revision: D8264565 fbshipit-source-id: 1abe5fb79b525108e64857dc28d5582372fcc165
-
Phil Willoughby authored
Summary: The instance method is permitted on `const` objects, so the ADL method should also accept a `const&` input. Reviewed By: yfeldblum Differential Revision: D8240295 fbshipit-source-id: 960aa5567afea3f52b91c1b83566820f5ecefc4d
-
Daniel Xu authored
Summary: IntervalRateLimiter was already operating on millisecond granularity. coarse_steady_clock offers better performance because it's on millisecond granularity. Reviewed By: yfeldblum Differential Revision: D8245042 fbshipit-source-id: 7ce0e347c0498ff2741adc727577c3bb2ce63979
-
Dan Melnic authored
Summary: Iterate only through the threads that have in use entries - v2 Reviewed By: djwatson Differential Revision: D8143429 fbshipit-source-id: 51098ff8e1fef7aaf9f1c0f2ddbf7ebb579cbeb4
-
- 03 Jun, 2018 2 commits
-
-
Yedidya Feldblum authored
Summary: [Folly] Cut `FOLLY_IS_TRIVIALLY_COPYABLE` macro, replacing all uses with `folly::is_trivially_copyable`. And cut `folly::IsTriviallyCopyable` with member-type-detection support, and move `folly::traits_detail::is_trivially_copyable` to `folly::is_trivially_copyable`. `FOLLY_IS_TRIVIALLY_COPYABLE` and `folly::IsTriviallyCopyable` were there to support gcc < 5. Reviewed By: Orvid Differential Revision: D8246972 fbshipit-source-id: 8af9bbdbfac8671a61ebaa200dbfd2426a40d2eb
-
Nathan Bronson authored
Summary: x86_64 chips with SSE >= 4.2 and many aarch64 chips have CRC32-specific instructions with excellent latency. This diff switches the bit mixer applied to untrusted hash functions to use these instructions. This is a noticeable win for the F14 uses that are CPU front-end bound. Reviewed By: yfeldblum Differential Revision: D8245688 fbshipit-source-id: f6a1c1c2a6365201178c653cd5d8c04fbac8d78e
-
- 02 Jun, 2018 1 commit
-
-
Lee Howes authored
Summary: Overall plan to modify Future<T>::delayed to complete on the same executor as the input future. 4/n: Remove Future::delayed completely to ensure that all users are on delayedUnsafe so that when we put delayed in with correct behaviour there is no incorrect use. Reviewed By: marshallcline Differential Revision: D8223327 fbshipit-source-id: c675d2d51afa2131eee5871afea45f1c6cc65a77
-
- 01 Jun, 2018 5 commits
-
-
Sergey Zhupanov authored
Summary: Minor refactoring of several fbcode/folly/ classes. Primarily constification, replacing custom code with call to boost, etc. Reviewed By: yfeldblum Differential Revision: D8239891 fbshipit-source-id: 14cb109b5deb27f8949b7889d195fcba29e2038c
-
Nathan Bronson authored
Summary: F14 can apply some additional optimizations for trivially copyable and trivially destructible values in the case that the allocator doesn't do anything special in its construct and destroy methods. Previously this was gated based on whether the allocator was exactly std::allocator, but that causes this optimization to be missed in some important cases. This diff extends the checking machinery to test if there is actually a default construct or destroy method in the allocator (they are optional) and to test if there is a manual override of the conservative default check. Reviewed By: yfeldblum Differential Revision: D8191437 fbshipit-source-id: c55b8f32427c3f0eff5c8ef42d7b51a57b0cbd1f
-
Marshall Cline authored
Summary: Core::hasResult() is called in lots of places: - future.result() - future.get() - future.wait() - future.within() - future.hasValue() - future.hasException() - future.getTry() - future.raise() - future.poll() - promise.setInterruptHandler() - etc. This diff improves that function as follows (source: godbolt, with optimization, on both gcc and clang): - old: 7 instructions w/ 2 conditional jumps + 1 unconditional jump; fastest path is 4 instructions w/ 2 jumps, slowest is 7 instructions w/ 2 jumps - new: 3 instructions w/ 0 jumps Small improvement overall, but to a widely used function. Reviewed By: yfeldblum Differential Revision: D8231048 fbshipit-source-id: 83a9f5c602475c2ca7066a45635d807596ecf37d
-
Marshall Cline authored
Summary: - Add class-level description including states & state-transitions - Add method-level contracts to Core Reviewed By: yfeldblum Differential Revision: D7923362 fbshipit-source-id: f7b0f340b6a768c33068547aa4a38acc72ad7088
-
Orvid King authored
Summary: We are changing `folly::collectAll` to return `SemiFuture` rather than `Future` and this is needed as an interim step. After all calls to `collectAll` are changed to `collectAllSemiFuture`, we'll be renaming it back to `collectAll`. Reviewed By: yfeldblum Differential Revision: D8210974 fbshipit-source-id: e4a7464f4a1c3ede157b8377a4df97d943001f60
-
- 31 May, 2018 13 commits
-
-
Yedidya Feldblum authored
Summary: [Folly] Simplify `folly/test/ExecutorTest.cpp`. * `auto` is fine. * `auto` is equivalent to `auto&&` when copy-elision is performed - in the former case, the compiler may use copy-elision to elide materialization of a temporary, whereas in the latter case, the compiler must materialize a temporary, rendering them equivalent.. * `std::addressof` is useful only for unknown types; prefix-`&` is fine for known types which do not overload that operator. Reviewed By: Orvid Differential Revision: D8226453 fbshipit-source-id: c987c71d65c01a2d8ca81960f796fcc6100c3484
-
Nathan Bronson authored
Summary: F14MapTest's random test checks afterward that some events happened, but this is not assured on different platforms. This diff inverts the checks so that the loop is continued until all necessary events have triggered. Hypothetical failures of the condition checked by the removed EXPECT_GE checks will be visible after this diff as test timeouts. Reviewed By: andreazevedo Differential Revision: D8226301 fbshipit-source-id: 2ec295b0f5f47e0726cdf1eb64b81c0c23eedae2
-
Nathan Bronson authored
Summary: Container swap is not allowed to fall back to allocation + move when allocators are not equal, which makes swap undefined in that case. FOLLY_SAFE_CHECK it. For zero-size allocators this check will be optimized away at compile time. Reviewed By: yfeldblum Differential Revision: D8209358 fbshipit-source-id: 6555f102c51c97f1e1ecfebd0597c532849184b5
-
Nathan Bronson authored
Reviewed By: yfeldblum Differential Revision: D8208046 fbshipit-source-id: 58ae8a1df7fedd7bb8ec63bcb51c82ec7fb3c9e8
-
Maged Michael authored
Summary: Avoid spin-waiting for threads that may be descheduled by making steps that used to require waiting for action by a specific thread wait-free. The changed steps are: - Allocating and linking the next segment - Advancing tail to the next segment - Advancing head to the next segment For SPSC, the consumer still must wait for the producer to advance tail before it advances head. Reviewed By: djwatson Differential Revision: D8124279 fbshipit-source-id: 4dc9b2c1f333a71e7283175e0f9c4ab2eaeb7549
-
Lee Howes authored
Make Future<T>::delayed complete on correct executor 2/n: Apply codemod future delayed to delayed unsafe Summary: Overall plan to modify Future<T>::delayed to complete on the same executor as the input future. 2/n: Codemod Future<T>::delayed to Future<T> delayedUnsafe. Name-only change, no behaviour. Reviewed By: yfeldblum Differential Revision: D8217994 fbshipit-source-id: e20f861c2545f08a177b78e1dba643b267146e94
-
Sven Over authored
Summary: We do not want implicit copies of `KeepAlive`, because they may be accidental and they impose an overhead. However, making a copy by calling `folly::getKeepAliveToken(keep_alive.get())` does not look very nice. Also, in case that `keep_alive` is a dummy, it makes an unnecessary call to `Executor::keepAliveAcquire`, which will return false but cannot be inlined usually because it's a virtual function. This diff adds a `copy() const` method which returns a copy of the `KeepAlive` object. It only calls `Executor::keepAliveAcquire` if the original object is not a dummy. Reviewed By: yfeldblum, andriigrynenko Differential Revision: D8203839 fbshipit-source-id: bb595d3836405bd84e55c4214ac19127b1e0e42a
-
Sven Over authored
Summary: This diff adds a simple unit test, verifying that construction of a `KeepAlive` object (either from `Executor*` or move construction) calls `keepAliveAcquire` and `keepAliveRelease` the correct number of times. Reviewed By: elsteveogrande Differential Revision: D8203944 fbshipit-source-id: 297beeaab99c55d7284ca06edd5e6b9023e27619
-
Andre Pinto authored
Summary: Somehow gcc49 as used in travis-ci is having a hard time deciding which constructor to call in `folly/executors/test/ThreadPoolExecutorTest.cpp:721`. It can't decide between `folly/executors/CPUThreadPoolExecutor.h:69` and `folly/executors/CPUThreadPoolExecutor.h:83`. All this diff does is give it a hint about which constructor it should use. Reviewed By: yfeldblum Differential Revision: D8219425 fbshipit-source-id: d92b08efc8bad795ce4a6775efd1e0512aaa6bb5
-
Yedidya Feldblum authored
Summary: [Folly] Cut Futures private invocability helpers, which can be replaced with invoke_result, is_invocable, etc. Reviewed By: marshallcline Differential Revision: D8087901 fbshipit-source-id: 17282d77aaff61350d1e7f1b0c363c25db8fb5b1
-
Yedidya Feldblum authored
Summary: [Folly] No longer allow continuations taking non-const lvalue-ref, since that is not really necessary - callers can get all the same results using continuations taking non-const rvalue-ref instead. Reviewed By: Orvid Differential Revision: D8166011 fbshipit-source-id: 468d049c6034339f3caf1a82fbc8c755ec2f51e6
-
Lee Howes authored
Summary: Overall plan to modify Future<T>::delayed to complete on the same executor as the input future. 1/n: Adds Future<T>::delayedUnsafe that is identical to Future<T>::delayed but acts as a codemod target. Reviewed By: marshallcline Differential Revision: D8209451 fbshipit-source-id: ee9c1184de2847e142516b315140fcc6d43948c5
-
Andre Pinto authored
Summary: `libfollylogging_example` is failing to link because it cannot find the definition of `folly::default_domain`. This diff adds Hazptr.cpp to the build script, which actually defines `folly::default_domain`. Reviewed By: yfeldblum Differential Revision: D8217299 fbshipit-source-id: 5fb36ef2f160cf45e93c2fc4098d58d384390e5d
-