- 26 Jul, 2017 12 commits
-
-
Yedidya Feldblum authored
Summary: [Folly] Outline `throw` statements in `dynamic`. There is no need for them to be inline - definitionally, they are always cold. Reviewed By: WillerZ Differential Revision: D5497457 fbshipit-source-id: 7b649c59b5b2609f838eb10e9329468d1bd1d558
-
Xiangyu Bu authored
Summary: It has been years since BEAST attack surfaced. The vulnerabilities have been patched and the mitigation using RC4 cipher is no longer needed. This diff removes the code relevant to mitigating BEAST years ago. Reviewed By: anirudhvr Differential Revision: D5409859 fbshipit-source-id: 58178e68a447f372b19491832a7be590af9402e9
-
Neel Goyal authored
Summary: Add an event base getter for AsyncUDPSocket similar to the other socket classes. Reviewed By: knekritz Differential Revision: D5498587 fbshipit-source-id: ac3179e03485328417ed9863f6bb790de7c691cb
-
Dave Watson authored
Summary: A ConcurrentHashMap with wait-free readers, as in Java's ConcurrentHashMap. It's a pretty generic closed-addressing chaining hashtable, except find() uses two hazard pointers to do hand-over-hand traversal of the list, so it never takes a lock. On rehash, only the part of the chain that remains the same (i.e. is still hashed to the same bucket) is reused, otherwise we have to allocate new nodes. Reallocating nodes means we either have to copy the value_type, or add in an extra indirection to access it. Both are supported. There's still a couple opportunities to squeeze some more perf out with optimistic loading of nodes / cachelines, but I didn't go that far yet, it sill looks pretty good. Reviewed By: davidtgoldblatt Differential Revision: D5349966 fbshipit-source-id: 022e8adacd0ddd32b2a4563caa99c0c4878851d8
-
Dave Watson authored
Summary: Currently hazard pointers doesn't support stealing any of the pointer bits. You can *almost* roll it yourself using try_protect, but this prevents implementations from choosing their type of barrier. This adds a new get_protected interface that you can use to steal bits, or otherwise manipulate pointers as you would like. This also adds a MWMR list based set example that uses it, that is wait-free for readers (unlike the SWMR example, that is only lock-free). Reviewed By: magedm Differential Revision: D5455615 fbshipit-source-id: 53d282eda433e00b6b53cd804d4e1c32c74c2fb8
-
Phil Willoughby authored
Summary: Now const-optimizer safe, and safe when the contained value overloads unary operator& Reviewed By: yfeldblum Differential Revision: D5480170 fbshipit-source-id: 3b53b0b6ce608857aa29d3f61eccd0b793b4cddc
-
Phil Willoughby authored
Reviewed By: yfeldblum Differential Revision: D5497522 fbshipit-source-id: bb208aeb37b5b9ce99619193d4cd2d0f3fb39178
-
Yedidya Feldblum authored
Summary: [Folly] Add `FOLLY_HAS_BUILTIN` and use it. Use it in the definition of `folly::launder`. Of course, since GCC does not have `__has_builtin`, we still have to check its version. Reviewed By: WillerZ Differential Revision: D5496748 fbshipit-source-id: 3bd6e89424dfd2c9cb9795ee4d88f66c4294cc4c
-
Yedidya Feldblum authored
Summary: [Folly] Cut `throwOnFail`. It is not necessary, and `CHECK_THROW`, its reason for existing, can be implemented without it. It can also easily be a pessimization because there is no way to delay computation of the arguments to the exception ctor until after the check. So if there is, say, a computation using `sformat` to compute a string argument to the exception ctor, that will always be performed rather than being performed only should the check fail. Reviewed By: Orvid Differential Revision: D5478804 fbshipit-source-id: 71a125c126eae76c6e95ef1bd23ee883b1db39a5
-
Yangqing Jia authored
Summary: (1) small_vector.h line 1099: wrap the default return in an else statement to avoid compiler warning of "unreachable statement". (2) Constexpr.h: need to treat cudacc similarly to msvc. (Note: this ignores all push blocking failures!) Reviewed By: dzhulgakov Differential Revision: D5387061 fbshipit-source-id: f002ab5ec00d4dcd85d86386f87a0327023afa1b
-
Yedidya Feldblum authored
Summary: [Folly] Move `__CLANG_PREREQ` to `folly/CPortabiilty.h`. Reviewed By: Orvid Differential Revision: D5496372 fbshipit-source-id: 710af3d30aa8bd0e5f645beede354e3463f1bb25
-
Yedidya Feldblum authored
Summary: [Folly] There is no `HAVE_SHADOW_LOCAL_WARNINGS` It is `FOLLY_HAVE_SHADOW_LOCAL_WARNINGS`. Reviewed By: Orvid Differential Revision: D5496247 fbshipit-source-id: 689f40180180465bdc44593059e44fb64cf3e415
-
- 25 Jul, 2017 5 commits
-
-
Mingtao Yang authored
Reviewed By: anirudhvr Differential Revision: D5492790 fbshipit-source-id: 10e868976a7ea42673d5b5c906a53c6c9495a288
-
nicksbyman authored
Summary: Closes https://github.com/facebook/folly/pull/642 Reviewed By: Orvid Differential Revision: D5471368 Pulled By: yfeldblum fbshipit-source-id: 3bbafd04b93828121ba829027959b6b3e0e55888
-
Mingtao Yang authored
Summary: OpenSSL 1.1.0 deprecates the callback based locking setup in favor for platform native mutexes. Added `OPENSSL_init_ssl` in the OpenSSL portability module for OpenSSL API < 1.1.0. This implements the standard OpenSSL library initialization routines (taken from SSLContext::initializeOpenSSL). Added `OPENSSL_cleanup` in the OpenSSL portability module for OpenSSL API < 1.1.0. This implements the cleanup routine from SSLContext::cleanupOpenSSL. Removed `SSLContext::SSLLockType`. Replaced with `folly::ssl::LockType`. Reviewed By: mzlee, ngoyal Differential Revision: D5404777 fbshipit-source-id: 7e5d9bf4a6683afb5560ada0a5b73cac3ff2662b
-
Nicholas Ormrod authored
Summary: If an exception is thrown during the construction of value in a container, then the Transformer iterator will not successfully reconstruct a cache_ object after explicitly calling its destructor (due to the exception being thrown), which results in a double-free when cache_ is destroyed as part of Transformer's destructor. Conveniently, there exists a piece of code designed to solve just this problem: folly::Optional. Replace cache_ and valid_ with folly::Optional. This also fixes the unnecessary requirement that container value types have default constructors, since cache_ is no longer default constructed inside of Transformer. Reviewed By: markisaa Differential Revision: D5472342 fbshipit-source-id: eade1f7ce260b9b3406d92af8255b5ffa4e4a51c
-
Phil Willoughby authored
Summary: An instance of `Replaceable<T>` wraps an instance of `T`. You access the inner `T` instance with `operator*` and `operator->` (as if it were a smart pointer). `Replaceable<T>` adds no indirection cost and performs no allocations. `Replaceable<T>` has the same size and alignment as `T`. You can replace the `T` within a `Replaceable<T>` using the `emplace` method (presuming that it is constructible and destructible without throwing exceptions). If the destructor or constructor you're using could throw an exception you should use `Optional<T>` instead, as it's not a logic error for that to be empty. Reviewed By: yfeldblum Differential Revision: D5346528 fbshipit-source-id: c7d72e73ea04e371325327a7ff0b345315d6e5ac
-
- 24 Jul, 2017 2 commits
-
-
Yedidya Feldblum authored
Summary: [Folly] Move the SpookyHash libraries into `folly/hash`. And propagate the changes to `#include` lines, etc. Reviewed By: Orvid Differential Revision: D5477735 fbshipit-source-id: 94fe95ece05b52bde1466ab5f9fb8b53a4c59bed
-
Yedidya Feldblum authored
Summary: [Folly] Outline the `throw` statements in `Try`. They are by definition cold and so we gain nothing from inlining them. Reviewed By: Orvid Differential Revision: D5478237 fbshipit-source-id: f413251a56ca4cbddcf3baea6679a552ae5bb19e
-
- 23 Jul, 2017 1 commit
-
-
Subodh Iyengar authored
Summary: Add fnv1-a 64 bit hash to Hash.h. fnv1-a is supposed to be preferred over fnv1. Reviewed By: yfeldblum Differential Revision: D5453401 fbshipit-source-id: c13f12ef11eb6745c95f3901b14ceafce90ea0ea
-
- 22 Jul, 2017 2 commits
-
-
Mihaela Ogrezeanu authored
Summary: This reverts commit 616b04579eb6c822023b04840b075f3ac9fbb720 bypass-lint Differential Revision: D5455584 fbshipit-source-id: afc712fe40121232f52a5bad781350581cec6ce8
-
Yedidya Feldblum authored
Summary: [Folly] Move the SpookyHash libraries into `folly/hash`. And propagate the changes to `#include` lines, etc. Reviewed By: ot, ericniebler, Orvid Differential Revision: D5455584 fbshipit-source-id: 616b04579eb6c822023b04840b075f3ac9fbb720
-
- 21 Jul, 2017 6 commits
-
-
Stephen Chen authored
Summary: On the non sse42 path, we throw std::runtime_error, but Crc32cDetail.cpp is missing the header for it so it fails to compile on aarch64. Reviewed By: yfeldblum Differential Revision: D5468906 fbshipit-source-id: 2d5408621cb2b6758d3501407ed3d2a40d79f1b0
-
Yedidya Feldblum authored
Summary: [Folly] Apply `clang-format` to `folly/experimental/symbolizer/`. Reviewed By: Orvid Differential Revision: D5468832 fbshipit-source-id: 94a0f82312769be0e8be724c11f97e14425ead10
-
Yedidya Feldblum authored
Summary: [Folly] Apply `clang-format` to `folly/experimental/io/`. Reviewed By: Orvid Differential Revision: D5460571 fbshipit-source-id: d19aff829316dd277e65620196e12db8cad46787
-
Yedidya Feldblum authored
Summary: [Folly] Style tweaks to `max_align_v` calculation. * Change ns from `folly::detail` since that can be crowded and many other folly libraries may include this header. * Extract a 2-param `max` alias. * Fix an incorrectly hardcoded `size_t`. Reviewed By: WillerZ Differential Revision: D5468758 fbshipit-source-id: 14a3f67323020a3cfce2b3b46f5f64f3e6125027
-
Yedidya Feldblum authored
Summary: [Folly] Apply `clang-format` to `folly/tracing/`. Reviewed By: Orvid Differential Revision: D5460511 fbshipit-source-id: c7a7d34211044a1b76934f184a8552a96d0bad91
-
Yedidya Feldblum authored
Summary: [Folly] Parse suffixes without switch-fallthrough in huge-pages. It is clever, but weird. We can use an immediately-executed lambda expression to make it convenient. Reviewed By: Orvid Differential Revision: D5467585 fbshipit-source-id: 02ddb97641db97e38e3f40388ecc522eccd436cb
-
- 20 Jul, 2017 8 commits
-
-
Yedidya Feldblum authored
Summary: [Folly] Apply `clang-format` to `folly/experimental/bser/`. Reviewed By: Orvid Differential Revision: D5460552 fbshipit-source-id: e103f8920eb29b7c14688f5bbb3e28129ef35e96
-
Yedidya Feldblum authored
Summary: [Folly] Drop a remnant of gcc48 support in futures. Because gcc48 is no longer supported. Reviewed By: Orvid, meyering Differential Revision: D5460788 fbshipit-source-id: 86e2985a0980357641d18f59fd25b9667ec30ab0
-
Jeff Cai authored
Summary: Fix comment for exception_wrapper's `operator bool()`. It reads "return `true` if `*this` is not holding an exception" but the actual behavior is to return `true` if `*this` *is* holding an exception. Reviewed By: yfeldblum Differential Revision: D5456386 fbshipit-source-id: ec3a472ea441476d835881e94036a3957bb2ab32
-
Phil Willoughby authored
Summary: `folly::max_align_t` is a portable replacement for `std::max_align_t`. `folly::max_align_v` is a `constexpr size_t` with the same value as `alignof(folly::max_align_t)` 32-bit iOS environments have `alignof(std::max_align_t) == 4`, which is not correct. This is more correct in that I have not yet found a more-aligned basic type. Reviewed By: yfeldblum Differential Revision: D5442333 fbshipit-source-id: 0a93e48a730d65ef76e04f132b5976c93587b14c
-
Subodh Iyengar authored
Summary: Add non null annotation to folly to help with linters complaining when a pointer could be null, however it never is. Reviewed By: yfeldblum Differential Revision: D5453255 fbshipit-source-id: cf7ccbcc86d171ef4f6d373b6f751f709e4587b1
-
Yedidya Feldblum authored
Summary: [Folly] Move futures helper types into `folly::futures::detail`. From `folly::detail`, where it would be easier to collide. Especially for names like `Core`. Reviewed By: WillerZ Differential Revision: D5460766 fbshipit-source-id: 3f7bff784bbb89c7c86d2f1824323d71321c7ad6
-
Benjamin Reesman authored
Summary: It is possible in certain cirucmstances for the cxxabi reflection code in `ExceptionTracer` to fail to cope with exceptions that we've seen in production and it currently aborts the process in that case. This diff switches this to `DFATAL`/`DCHECK`. Reviewed By: yfeldblum Differential Revision: D5431445 fbshipit-source-id: c3d68372c2fadbb518f78fe99e817db611953d22
-
Tom Jackson authored
Summary: The pattern `mapped([](auto&& i) { ...; return std::move(i); }` is quite common. Evidently people need some good mechanism to just observe or possibly mutate items in pipelines. Note that this is still lazy, it is only called when the pipeline is run. Reviewed By: yfeldblum Differential Revision: D5457196 fbshipit-source-id: 3a892b8895e02dd8fcd6a7fd4d3b27063d1b071f
-
- 19 Jul, 2017 4 commits
-
-
Victor Gao authored
Summary: Currently gcc does not support attributes declared using square brackets well and some builds might break because of this. Since `__attribute__((...))` works for both clang and gcc, we should switch to it for now. Reviewed By: yfeldblum Differential Revision: D5456734 fbshipit-source-id: d7a8bf1389afc5d60604f22d37c93611dc46259c
-
Dave Watson authored
Summary: Current folly version uses a single crc32c. crc32c has a latency of 3, so pipelining three in a row makes it nearly 3x faster (for data all in cache). Reviewed By: yfeldblum Differential Revision: D5418228 fbshipit-source-id: d3a250e1b4fe1f0bc99b44c660df94cf233aebd6
-
Xiangyu Bu authored
Summary: Add paths of SSLOptions.{cpp, h} to folly/Makefile.am. Reviewed By: Orvid Differential Revision: D5453343 fbshipit-source-id: ba0b8b065ed964dfff1757533db17e31aa672e83
-
Eli Lindsey authored
Summary: As written, this str() method depends on the current state of the host - if an interface disappears (as is commong with eg. mobile, ipsec, etc.) then attempting to generate a string representation of this v6 address will currently throw an exception. Instead, we're going toignore the lookup failure and append the index i; this form is interchangeable, though slightly less legible. Reviewed By: yfeldblum Differential Revision: D5443618 fbshipit-source-id: bbd3b4edaee8098671140af7400377d5e2b1937b
-