- 03 Jul, 2017 4 commits
-
-
Eric Niebler authored
Summary: `constexpr` All The Things! Reviewed By: Orvid Differential Revision: D5364910 fbshipit-source-id: 11abeb8adc38aef3ac4f2596ecf0f533b9e74203
-
Yedidya Feldblum authored
Summary: [Folly] For `futures::retrying`, detect policy type using `std::result_of`. `FOLLY_CREATE_HAS_MEMBER_FN_TRAITS` does not work in all cases. For example, it does not work with inherited members. And it is not really what we want, anyway, which is to dispatch based on the result type of invoking the policy with a particular set of arguments. We can do that more directly using `std::result_of`. And if we did not have `std::result_of`, then we could do that with SFINAE directly. Reviewed By: WillerZ Differential Revision: D5361808 fbshipit-source-id: 23f969dfd6dbaaa944dc2288e70c3ea11d3398f0
-
Phil Willoughby authored
Summary: Allows you to construct a `Future<A>` from a `Future<B>` if A can be constructed from `B&&`. The constructor is `implicit` if and only if `B&&` is convertible to `A`. This is the same philosophy as Optional, and has the same use-cases. Reviewed By: yfeldblum Differential Revision: D5264185 fbshipit-source-id: e2fae373ab549c186a69dc5f4e32481ef7b11bba
-
Christopher Dykes authored
Summary: There is no difference, as the statements are already implicitly volatile. Reviewed By: yfeldblum Differential Revision: D5363491 fbshipit-source-id: ab5bb878f5ca72aa0de96f82e345213729c071e2
-
- 02 Jul, 2017 6 commits
-
-
Yedidya Feldblum authored
Summary: [Folly] In-place construction for `Try`. Using `in_place` as the first argumenbt. Avoid move operations. Reviewed By: Orvid Differential Revision: D5362568 fbshipit-source-id: 5c2aaf5dba1253c59e384940add411f0f2b570b2
-
Yedidya Feldblum authored
Summary: [Folly] In-place construction for `Optional`. Using `in_place` as the first argument. Avoid move operations. Reviewed By: Orvid, ot Differential Revision: D5362563 fbshipit-source-id: 771db2556842d5dec35d1bf2ad6c23358a417d54
-
Yedidya Feldblum authored
Summary: [Folly] Move `in_place` and friends to `Utility.h`. Document that they are backports from C++17. Reviewed By: Orvid Differential Revision: D5362364 fbshipit-source-id: 495cb7f339fc558f20d89100c141fc7a243239d5
-
Yedidya Feldblum authored
Summary: [Folly] Remove `construct_in_place`. It is an alias for `in_place`, and unnecessary. Reviewed By: Orvid Differential Revision: D5362354 fbshipit-source-id: 39ce07bad87185e506fe7d780789b78060008182
-
Yedidya Feldblum authored
Summary: [Folly] Disambiguate the various `in_place` overloads, following C++17. Forwarding `folly::in_place` is ambiguous because there are multiple overloads and we depend on deduction to choose the correct overload. For example: ```lang=c++ enum struct Err {}; Expected<Expected<int, Err>, Err> val(in_place, in_place, 3); // fails to compile ``` So we must disambiguate the three overloads: the default, the typed, and the indexed. C++17 defines `std::in_place`, `std::in_place_type<typename>`, and `std::in_place_index<std::size_t>`. Let us mimic that exactly, so that it becomes trivial to swap out our implementations for the standard implementations once we jump to C++17. Reviewed By: Orvid Differential Revision: D5362339 fbshipit-source-id: d4012b01796390e74d8c14cdf68af70102608039
-
Christopher Dykes authored
Summary: There is no way to lock a socket on Windows, so these calls will always fail. Just don't do the lock on Windows. To do it properly with sockets, this should probably be forwarding to `sendmsg`/`recvmsg`, but this is good enough for now. Reviewed By: simpkins Differential Revision: D5307901 fbshipit-source-id: 9855274e932a3e2ec3cacae10363200187e0c01b
-
- 01 Jul, 2017 2 commits
-
-
Christopher Dykes authored
Summary: This also silences a few warnings in the stl vector tests. Reviewed By: yfeldblum Differential Revision: D5350383 fbshipit-source-id: 84df2a7dbfbb23ebb3f15a09f0cb58080b3e06d6
-
Nate Stedman authored
Summary: Xcode 9 is throwing errors because `-Wshadow-local` and `-Wshadow-compatible-local` are undefined in Clang. Reviewed By: Orvid Differential Revision: D5356476 fbshipit-source-id: 4cc9f48f796f66decb4beaa66d3e66f486449c19
-
- 30 Jun, 2017 8 commits
-
-
Christopher Dykes authored
Summary: Folly no longer supports GCC 4.8, so this is no longer needed. Reviewed By: yfeldblum Differential Revision: D5354542 fbshipit-source-id: bd9a2732f22f2176f64f92f0af6f7d59dd59a8d9
-
Christopher Dykes authored
Summary: This is so we can do some magic internally. Reviewed By: yfeldblum Differential Revision: D5354341 fbshipit-source-id: 96abf92f4765f5ae21aa3c0dc4bcadcc22560ab5
-
Adam Simpkins authored
Summary: This was breaking Windows builds. Reviewed By: Orvid Differential Revision: D5351468 fbshipit-source-id: 3385931b82b11d71d98861fb45efc71a632d470b
-
Christopher Dykes authored
Summary: Because `#warn` isn't actually a thing. Reviewed By: ot Differential Revision: D5356878 fbshipit-source-id: 57751ca57e7f6aaf9f4d8be70958b9cacc4f7335
-
Christopher Dykes authored
Summary: The empty file was left to stop the bleeding without breaking things. Time to remove it. Reviewed By: mzlee Differential Revision: D5354310 fbshipit-source-id: cd3039811cf9d7371578e4078cd7d32e3bc6d8a1
-
Maged Michael authored
Summary: reserved Reviewed By: djwatson Differential Revision: D5352232 fbshipit-source-id: e3c27e22320e12bd635acb8a1b394a9de02cecfc
-
Maged Michael authored
Summary: - Fixed leak in hazptr_priv destruction - Updated tests to detect leak Reviewed By: djwatson Differential Revision: D5351280 fbshipit-source-id: 724810cbbe0565f0cbd41f9d2121abefd98487bd
-
Christopher Dykes authored
Summary: It doesn't need to exist anymore Reviewed By: yfeldblum Differential Revision: D5318746 fbshipit-source-id: c70b184f4b3fc12ede4632d6b3d43de16ed758c7
-
- 29 Jun, 2017 4 commits
-
-
Adam Simpkins authored
Summary: Versions of gcc prior to 5.x only support C++11 constexpr functions, and require that they consist of only a single return statement. This updates isLogLevelFatal() to meet those requirements so that it can still be compiled with gcc 4.9. Reviewed By: ikobzar Differential Revision: D5350304 fbshipit-source-id: 2a9c256236c484f8c3d5f83690fde8b7333aa4fc
-
Ankit Shah authored
Summary: Using RSA free and removing unnecessary Bignum allocations to prevent test failures due to memory leaks Reviewed By: anirudhvr Differential Revision: D5348232 fbshipit-source-id: 7c76f3dced26a3080fc82b4bacc06bc0768d6fda
-
Maged Michael authored
Summary: - Add support for private lists of retired objects - Add an option for one domain - More scalable thread cache managemnt - hazptr_rec alignment - FOLLY_ALWAYS_INLINE - Refactor management of retired objects in hazptr_domain - Refactor benchmarks Reviewed By: davidtgoldblatt Differential Revision: D5322646 fbshipit-source-id: 9d31582b9a8216861e7e78e2e1cd08dc11cf7f88
-
Andrew Krieger authored
Summary: So we can use writeFile in projects which compile with -fno-rtti Reviewed By: mzlee Differential Revision: D5341469 fbshipit-source-id: bb77baf9576604ff862d54d59bf382862bd0dd58
-
- 28 Jun, 2017 4 commits
-
-
Andrew Krieger authored
Summary: writeFileAtomic variants all have a mode, lets just hoist the mode parameter up and use what was hardcoded as the default. Reviewed By: Orvid Differential Revision: D5341481 fbshipit-source-id: 6976915dd73d2382b42bd991782730601b918978
-
Giuseppe Ottaviano authored
Summary: There's no reason these utilities should only be used by folly. Reviewed By: mzlee Differential Revision: D5317894 fbshipit-source-id: 5a9bdf4c5efaa5bcbe78e6723a03a468f2fe5e32
-
Ankit Shah authored
Summary: Added getter and setter methods for the RSA struct in OpenSSL. This is needed for compatibility between OpenSSl 1.1.0 and other versions. Reviewed By: yfeldblum Differential Revision: D5331948 fbshipit-source-id: ab52ffd38bb5e0bd59e058bcbc6ec6122839844e
-
Christopher Dykes authored
Summary: GCC 7 has issues with `this->` in trailing return type declarations. This takes the approach of eliminating the trailing return types entirely. Closes https://github.com/facebook/folly/pull/621 Reviewed By: yfeldblum Differential Revision: D5324763 fbshipit-source-id: e38ae76c13ff60bc227146c1ec25afbac8b6982f
-
- 27 Jun, 2017 4 commits
-
-
Yedidya Feldblum authored
Summary: [Folly] Fixes for `Try::withException`. * Fix the overload with the exception type specified so that the specified exception type is checked. A mismatch between the specified exception type and the parameter type of the passed invokable will result in the expected compiler error. * Add an overload where the exception type is deduced intentionally, as opposed to accidentally. Of course, these simply forward to their corresponding `exception_wrapper::withException` overloads. Reviewed By: ericniebler Differential Revision: D5216691 fbshipit-source-id: 7e85c906c3aa17dfede6e0980c6ac8bf75034073
-
Dave Watson authored
Summary: As title. Reviewed By: WillerZ, yfeldblum, ivmaykov Differential Revision: D5312308 fbshipit-source-id: 91ad4bb39df0619f2885e13c1fda1e018292a40e
-
Adam Simpkins authored
Summary: Add attachEventBase() and detachEventBase() methods to AsyncSignalHandler, similar to the methods of AsyncSocket. The main benefit of this is that it allows creating an AsyncSignalHandler with an initially null EventBase, and then attaching it to an EventBase at some later point in time. Reviewed By: yfeldblum Differential Revision: D5315325 fbshipit-source-id: 8a4ca483a62ca86837ea0bb54fa9a70d59f2f04e
-
Adam Simpkins authored
Summary: Clang's UndefinedBehaviorSanitizer flagged an issue that pushAtMost() could call `memcpy(dest, nullptr, 0)` if the input was an empty `ByteRange`. A default constructed `ByteRange` (or `StringPiece`) will be empty and both its begin and end pointers will be null. Unfortunately it is undefined behavior to call `memcpy()` with a null source pointer even if the length is 0. This updates the `Cursor` and `Appender` code to avoid calling `memcpy()` at all when the input length is 0. Reviewed By: yfeldblum Differential Revision: D5322917 fbshipit-source-id: 67fce9579f97e7e93a5767b11cc5e43ff7be5876
-
- 26 Jun, 2017 8 commits
-
-
Giuseppe Ottaviano authored
Summary: `FormatValue` holds non-integral objects by reference, which can cause subtle problems if a formatter is constructed with temporary arguments and used beyond the expression that constructs it. With this diff the arguments are perfectly forwarded into a tuple, so the formatter will take ownership of the temporaries while holding references to lvalues as before. The only downside is that now `FormatValue` objects are constructed every time the formatter is used, rather than only at formatter construction. This should not be noticeable as those objects' constructors should just take a reference to the argument. Note that the format string is still held by reference, but this is fine because it should almost always be a string literal. Reviewed By: ericniebler Differential Revision: D5317382 fbshipit-source-id: ef8355194b634d3751ef1ccca32dd1db29e27c48
-
Christopher Dykes authored
Summary: Previously, only marking it as non-blocking was supported. Reviewed By: simpkins Differential Revision: D5307769 fbshipit-source-id: 03ed7c35632dbc9551552b21c401ea709bd6eaaa
-
Marie Bremner authored
Summary: Edited the example function for withWLock Reviewed By: simpkins Differential Revision: D5322000 fbshipit-source-id: 6d95b173087dec33cfdc0d0cee9c605cdf4e2593
-
Yedidya Feldblum authored
Summary: [Folly] Let `make_exception_wrapper` construct on-heap objects in-place. Currently, it constructs on-heap objects on the stack and then move-constructs them into on-heap storage. Reviewed By: ericniebler Differential Revision: D5315104 fbshipit-source-id: cc0493e7d98aacadd342eb56601028ced4a19bb3
-
Bi Xue authored
Fix SharedPromise::isFulfilled doesn't get back correct value when it's running in a different thread of SharedPromise::setValue Summary: The implementation of `SharedPromise::isFulfilled` return `hasValue_` directly without taking a lock. `isFulfilled` can be accessed concurrently, but `hasValue_` is not synchronized. Adding a lock fix the issue. Reviewed By: yfeldblum Differential Revision: D5319030 fbshipit-source-id: a94b12ed277aa64254680ae84cb18946226cceea
-
Christopher Dykes authored
Summary: There was a circular dependency between the `detail/ThreadLocalDetail.(cpp|h)` files and `ThreadLocal.(cpp|h)`, this resolves that circular dependency by moving a couple of declarations into the detail file. Reviewed By: yfeldblum Differential Revision: D5318875 fbshipit-source-id: 61de7c4b3ffa30f9eb11bd97e0493e9de12c5804
-
Christopher Dykes authored
Summary: This reverts commit f16634ce92ee6c299613d3db22f0537bd31ac14d Differential Revision: D5312574 fbshipit-source-id: 1557ac17f79fb8e3530a09d69fa978ddd38e5093
-
Phil Willoughby authored
Summary: `toDelim` with a single parameter of the same type as the target type was previously copy-constructing its result. It will now construct it with perfect forwarding which is more efficient if the input is a temporary. This brings `toDelim` into line with the similar implementations of `to` and `tryTo` Reviewed By: yfeldblum Differential Revision: D5301427 fbshipit-source-id: 843a2d93384de88cce42f26da6562a1a6ed0dc9c
-