- 06 Jun, 2018 1 commit
-
-
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
-
- 30 May, 2018 9 commits
-
-
Maged Michael authored
Summary: - Use the hazptr library under folly/synchronization. - Use hazptr_obj_base_linked to manage counted links. Reviewed By: djwatson Differential Revision: D7674822 fbshipit-source-id: a87ece5dd1c7670677486af59988af8518abaf92
-
Yedidya Feldblum authored
Summary: CodeMod: `future-then-continuation-lvalue-ref`. ``` buck run mode/opt foundation/clangr:clangr_coordinator -- run foundation/clang/codemods:future-then-continuation-lvalue-ref --dev -p 7 --num-workers=200 ``` There is no need to support continuations taking non-const lvalue-ref params; callers can get exactly the same semantics with non-const rvalue-ref params instead. Thsi codemod preserves semantics. Many of these cases could do just as well taking by value, but this codemod preserves semantics. Reviewed By: Orvid Differential Revision: D8166008 fbshipit-source-id: 84b635cccce24b6485ffb5b24b98f10422b9a517
-
Lee Howes authored
Summary: Original commit changeset: adcd387e237d Reviewed By: mzlee Differential Revision: D8204982 fbshipit-source-id: 2c66f58ccf41dc70f55b3ecffc6e197c23c4f959
-
Maged Michael authored
Summary: Fix typos Reviewed By: Tingzhe Differential Revision: D8160938 fbshipit-source-id: f4eaf496a33b7d2b6266a8424850640028660331
-
Dave Watson authored
Summary: As title. These methods look like they never protected observers_ list, and relied on the user not calling addObserver or removeObserver concurrently. I don't see any downsides to taking a write lock here, these methods aren't called often. Reviewed By: davidtgoldblatt Differential Revision: D8187184 fbshipit-source-id: dd20b809e851cc14a05aca3bc9722e0a9236665f
-
Dave Watson authored
Summary: Causing perf issues. Users must add explicitly to tests or other use cases. Differential Revision: D8162835 fbshipit-source-id: 7095064209ced870768552307675dc1ebbf68bdc
-
Dave Watson authored
Summary: Add correct memory barrier to thread timeout / add path. This seems like the fastest way to maintain safety here. We could use a read-biased rw lock instead, but that would mean taking a heavy memory barrier in add() if we do have to add a thread. Reviewed By: davidtgoldblatt Differential Revision: D8161950 fbshipit-source-id: af2bd3a601ced9bb04a8206696e7a998c75f6369
-
Lee Howes authored
Summary: Future::delayed could complete on Future::sleep's executor. Ensure instead that it completes on the future's executor. Reviewed By: yfeldblum Differential Revision: D8052038 fbshipit-source-id: adcd387e237dbd724d5f9deb5c80d1418987482d
-
Lee Howes authored
Summary: Make onTimeout call thenError which maintains the executor rather than onError which does not. Reviewed By: yfeldblum Differential Revision: D8051906 fbshipit-source-id: 41ca5f657a441ff8eaacdfab6d4cfb45d5e5f0c2
-