- 30 Aug, 2017 6 commits
-
-
Michael Lee authored
Summary: <array> is sometimes necessary for using `std::array`. Fix up Reviewed By: aary Differential Revision: D5740866 fbshipit-source-id: 13bafadd26fdd0f2eff3513115b43811682e7cda
-
Aaryaman Sagar authored
Summary: Code was breaking in versions of C++ where constexpr functions are required to have one line bodies Reviewed By: yfeldblum, mzlee Differential Revision: D5739062 fbshipit-source-id: 6c509f1daf77751d33ce9c173a0d7f1d3bd2a006
-
Maged Michael authored
Dynamic MPMCQueue: Eliminate cases of enqueue indefinite blocking and failure in the extensible version that impossible under the default pre-allocated version Summary: Currently under the extensible version (Dynamic == true), some enqueue operations may block indefinitely or fail (return false) even though such outcomes are impossible under the default (Dynamic == false) pre-allocated version. This diff eliminates such cases by changing the algorithms for the extensible version. Some of the high-level changes: - The offset formula for an expansion guarantees that no enqueue operation left behind in a closed array does not have an existing dequeue operation that unblocks it. The old formula was 1 + max(head, tail). The new formula is max(head, current offset) + current capacity. - Conditional operations validate state after the success of CAS. Reviewed By: djwatson Differential Revision: D5701013 fbshipit-source-id: 4917c5b35b7e2a2fddfd2e11fb5aeb478502137c
-
Yedidya Feldblum authored
Summary: [Folly] `constexpr_log2`. Useful for anything that needs to compute log2 at compile time. Reviewed By: eduardo-elizondo Differential Revision: D5734727 fbshipit-source-id: 8eab7991eea2104570eecd8e84ede6160bb0b549
-
Yedidya Feldblum authored
Summary: [Folly] Shrink `MicroSpinLock.h` transitive includes and inline methods. Reviewed By: meyering Differential Revision: D5732693 fbshipit-source-id: 386816f0d97c145ff8a4180d41c8a682694aa6cb
-
Xiao Shi authored
Summary: This comment is outdated. Reviewed By: yfeldblum Differential Revision: D5730049 fbshipit-source-id: f6088c4354210fafb019656cdf8246abf90fbc06
-
- 29 Aug, 2017 7 commits
-
-
Richard Meng authored
Summary: Before this change, future context will not be cleaned up until timekeeper times out. These objects has been occupying memory when more shorter future tasks are registered. Switch to use weak ptr to hold context, so that context objects are deallocated as soon as the future completes (or times out) Reviewed By: yfeldblum Differential Revision: D5692040 fbshipit-source-id: b3b74a29b2ccafef6c4a06011699b069feb3a847
-
Andrew Krieger authored
Summary: Let clients choose whether to use fibers or not, but default to the same autodetected setting as prior logic. Reviewed By: yfeldblum Differential Revision: D5585605 fbshipit-source-id: 9a4bf9f9bc23b4e15601f30c40602f21798c9685
-
Andrew Krieger authored
Summary: MSVC warns this might be used but uninitialized. Force the struct to be zero initialized. Reviewed By: yfeldblum Differential Revision: D5585320 fbshipit-source-id: 9454a2a4a66c7689f42b1eb211dc57f5d3b88fea
-
Andrew Krieger authored
Summary: Off-by-one error in DIR::open() would result in paths not ending in a trailing separator to fail to open. Fix the arithmetic. Reviewed By: Orvid Differential Revision: D5579657 fbshipit-source-id: 79507bc398549033eb26b2ffa788d66241deb623
-
Andrew Krieger authored
Summary: This implementation should suffice for MSVC. _ReadWriteBarrier() generates no instructions but instructs the compiler not to reorder accesses around it, and we have to rely on MSVC not currently having any other optimizations for const members to worry about. Reviewed By: yfeldblum Differential Revision: D5723782 fbshipit-source-id: a68caa4673a5c410b326c1d2e3c0752bd945f4a6
-
Yedidya Feldblum authored
Summary: [Folly] Apply `clang-format` to `folly/experimental/exception_tracer/`. Reviewed By: Orvid Differential Revision: D5722994 fbshipit-source-id: 2e52c920119ba58d123aaffd59491d7561c37c17
-
Christopher Dykes authored
Summary: This reverts commit 1744685ff9fa8d3620aef2545c8fe3ebc481df06 bypass-lint Differential Revision: D5714883 fbshipit-source-id: 0cdb5f2cac095a9202cb1310ff8e75e75b4afd74
-
- 28 Aug, 2017 3 commits
-
-
Christopher Dykes authored
Summary: This enables the last of the magic internally. Reviewed By: yfeldblum Differential Revision: D5719795 fbshipit-source-id: fb59a0d7873e9a9f3b73f556b42b647091ca7e67
-
Yedidya Feldblum authored
Summary: [Folly] Shrink `MicroSpinLock.h` transitive includes and inline methods. Reviewed By: Orvid Differential Revision: D5714883 fbshipit-source-id: 1744685ff9fa8d3620aef2545c8fe3ebc481df06
-
Patryk Zaryjewski authored
Summary: Currently FunctionScheduler calls that cancel/restart timer for a function of particular id are O(n). By introducing hashmap that translate id to pointer of particular RepeatFunc, we make it O(1). Reviewed By: simpkins Differential Revision: D5668557 fbshipit-source-id: e5e8bf9bd75b6d5d42f0bfa398d476703e5801fa
-
- 25 Aug, 2017 5 commits
-
-
Aaryaman Sagar authored
Summary: The current definition of void_t was leading to errors because unused template parameters are ignored and SFINAE SFIAEs Reviewed By: yfeldblum Differential Revision: D5700825 fbshipit-source-id: d23336070c217e8594980d6db710cb417b014236
-
Marko Novakovic authored
Summary: The flag FOLLY_FORCE_EXCEPTION_COUNT_USE_STD forces the usage of std:uncaught_exceptions() for folly's implementation of uncaught_exceptions() Reviewed By: yfeldblum Differential Revision: D5542302 fbshipit-source-id: 2c2f507ab9dde916a160a9c370a267cdcfd7203a
-
Stella Lau authored
Summary: - Throw exception if no forward progress was made with `StreamCodec.compress()` and `StreamCodec.uncompress()` - Prevents infinite looping behavior when no forward progress was made - Update tests Reviewed By: terrelln Differential Revision: D5685690 fbshipit-source-id: 969393896b74f51250f0e0ce3af0cd4fedcab49a
-
Qinfan Wu authored
Summary: [Folly] Fix typo in `Function.h`. Reviewed By: yfeldblum Differential Revision: D5703550 fbshipit-source-id: 9dc09697fd09db6c65b1a4f2d8bdf44451b4aab2
-
Greg Nisbet authored
Summary: add public kSlotSize to IndexedMemPool, needed to support getting the approximate memory footprint of the pool (since a Slot has two atomic uint32_t's more than a bare Elem) Reviewed By: yfeldblum Differential Revision: D5690225 fbshipit-source-id: 667da6b67b339038b92b0e5acde17219fe1c85c5
-
- 24 Aug, 2017 9 commits
-
-
Aaryaman Sagar authored
Summary: Try was missing some important-ish overloads that help it behave well in rvalue contexts Reviewed By: yfeldblum Differential Revision: D5692021 fbshipit-source-id: c34627b56eb52dceaeb1f00ae930ee3bc6e00306
-
Aaryaman Sagar authored
Summary: unwrapTryTuple only accepted rvalue tuple types, this diff fixes that to work with forwarding reference tuple types. Also reduces the number of template instantiations Reviewed By: yfeldblum Differential Revision: D5682996 fbshipit-source-id: ee6dd2c20d8dfca33e769a98a6ca56fa96c73b72
-
Andrii Kryzhyk authored
Summary: Link local is not the only type of address that is based on mac address, therefore create generic function to extract mac address from EUI-64 autoconfigured addresses using the same logic as for getMacAddressFromLinkLocal Reviewed By: pallotron Differential Revision: D5697781 fbshipit-source-id: 4d69085a1d8f08e06496b8a9b638ac7ff31c6c3a
-
Peter DeLong authored
Summary: Reformatted the scripts and test files to look better and also to avoid lint warnings in the future Reviewed By: andriigrynenko Differential Revision: D5673856 fbshipit-source-id: 5818625ec14d18ef3b9b804df53949afefc3b98f
-
Stella Lau authored
Summary: - Replace LZMA2Codec with LZMA2StreamCodec - Update tests to reflect LZMA2_VARINT_SIZE requiring data length Reviewed By: terrelln Differential Revision: D5625388 fbshipit-source-id: 3303c6dda5d41f40615c87504a46923815b0b716
-
Yedidya Feldblum authored
Summary: [Folly] `Try::exception` overload for `Try&&`. For consistency with `Try::value`. Reviewed By: WillerZ Differential Revision: D5691758 fbshipit-source-id: 9904b2a5c90f4575a3c09dc012658d359d11fdd9
-
Christopher Dykes authored
Summary: `FOLLY_AARCH64` is more descriptive. (searching for A64 tells you nothing, searching for aarch64 tells you a lot) Reviewed By: yfeldblum, andrewjcg Differential Revision: D5663075 fbshipit-source-id: 8f31fde4aa394f5452305929541af6d38e4d8a37
-
shane authored
Summary: the README didn't have explicit instructions for ubuntu 16.04 LTS... now it does. i also added a section for how to handle building folly w/a custom boost installation. Closes https://github.com/facebook/folly/pull/664 Reviewed By: eduardo-elizondo Differential Revision: D5694143 Pulled By: yfeldblum fbshipit-source-id: e2786d045c3459cac49c8b052d90ca24d10f7922
-
Alison Tsai authored
Summary: Add a macro to enable optional scoped trace section functionality (user-defined). This macro will have no effect unless configured to do so. This change means that if proxygen is being upgraded, folly must also be updated. Reviewed By: mzlee Differential Revision: D5635123 fbshipit-source-id: 7db17f6ae8c0d1484cf9fad043eb42717279bd0a
-
- 22 Aug, 2017 5 commits
-
-
Yedidya Feldblum authored
Summary: [Folly] Use simple `exception_wrapper` ctor in the `Promise::setException` test. And add a new case testing with `exception_ptr`. Reviewed By: andrewjcg Differential Revision: D5683035 fbshipit-source-id: e8276166dacbe09a9a745271d636db44c593058c
-
Aaryaman Sagar authored
Summary: Adding a for_each function that allows generalized indexed and breakable iteration through ranges, these can either be runtime ranges (i.e. entities for which std::begin and std::end work) or compile time ranges (as deemed by the presence of a std::tuple_length<>, get<> (ADL resolved) functions) The function is made to provide a convenient library based solution to the proposal p0589r0, which aims to generalize the range based for loop even further to work with compile time ranges A drawback of using range based for loops is that sometimes you do not have access to the index within the range. This provides easy access to that, even with compile time ranges. Further this also provides a good way to break out of a loop without any overhead when that is not used. A simple use case would be when using futures, if the user was doing calls to n servers then they would accept the callback with the futures like this auto vec = std::vector<std::future<int>>{request_one(), ...}; when_all(vec.begin(), vec.end()).then([](auto futures) { folly::for_each(futures, [](auto& fut) { ... }); }); Now when this code switches to use tuples instead of the runtime std::vector, then the loop does not need to change, the code will still work just fine when_all(future_one, future_two, future_three).then([](auto futures) { folly::for_each(futures, [](auto& fut) { ... }); }); Reviewed By: yfeldblum Differential Revision: D5557336 fbshipit-source-id: 79fcbafa7e1671f8856f0dcb7bf7996435dadeaa
-
Mingtao Yang authored
Summary: Even though MockAsyncSSLSocket's initializes AsyncSSLSocket, which should initialize AsyncSocket, this does not actually happen because AsyncSSLSocket virtually inherits from AsyncSocket. Because of this, prior to this diff, the MockAsyncSSLSocket was not properly setting its EventBase. Reviewed By: knekritz Differential Revision: D5676596 fbshipit-source-id: 5f3c0e848179cb5eb4d2dc4921a11e7c04d7c0e0
-
Yedidya Feldblum authored
Summary: [Folly] Use `exception_wrapper::from_exception_ptr` in `Try` and `Promise`. It does just what we need; DRY. Reviewed By: andrewjcg Differential Revision: D5674663 fbshipit-source-id: 73e46df62c06736c4eaf013d05dfea819cbec515
-
Stella Lau authored
Summary: - Create interface to initialize zlib codec using specific parameters - This enables the raw inflate/deflate and auto inflate options - Add tests for option initialization Reviewed By: terrelln, yfeldblum Differential Revision: D5649980 fbshipit-source-id: fd36e8edc0e8c528cd6c9d8f39e8ef839b6acfef
-
- 21 Aug, 2017 2 commits
-
-
Yedidya Feldblum authored
Summary: [Folly] `exception_wrapper::from_exception_ptr`. A handry helper for converting from `std::exception_ptr` to `folly::exception_wrapper`. Reviewed By: ericniebler Differential Revision: D5668179 fbshipit-source-id: a81a60cb22a2a697714268e027af62dd8825d2c3
-
Phil Willoughby authored
Summary: Fairly minimal API to start with. Refer to the comments for the rationale/usage. Reviewed By: yfeldblum Differential Revision: D5554854 fbshipit-source-id: 173bf7c40e70b55bf6afb8c4bc9e83d48f90b6ee
-
- 19 Aug, 2017 1 commit
-
-
Xiangyu Bu authored
Summary: A SSLOptions recommended for cipher use. Reviewed By: yfeldblum Differential Revision: D5614280 fbshipit-source-id: a6b1adfa8d168f35c7bc7d4088c4073c3f4084a5
-
- 18 Aug, 2017 2 commits
-
-
Xiangyu Bu authored
Summary: Make SSLContext::setCipherList() and SSLContext::setSignatureAlgorithms() accept std::array besides std::vector so that cipher lists in SSLOptions can be initialized POD. Reviewed By: yfeldblum Differential Revision: D5578758 fbshipit-source-id: 7e5c2e9a75600e93c89e7b13a9042434a4189384
-
Dave Watson authored
Summary: This was added several jemalloc versions ago, and is no longer a win. From microbenches in folly/test, this codepath is successful less than .5% of the time. There are a handful of other places directly using this (fbvector, IOBuf, ThreadLocal), but should probably change them individually. Reviewed By: interwq Differential Revision: D5596678 fbshipit-source-id: 354d7204f61df0eace4d98d930d0f6e06a90ffde
-