- 29 Jun, 2017 2 commits
-
-
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
-
- 25 Jun, 2017 3 commits
-
-
Christopher Dykes authored
Summary: In the parameter declarations for the `gettimeofday` portability header implementation. More details on exactly why can be found in the newly added comment on the function. Reviewed By: yfeldblum Differential Revision: D5281301 fbshipit-source-id: 1b246adc7743b5470201e452c008418429f7f142
-
Christopher Dykes authored
Summary: It's an example, not part of the main Folly library. Reviewed By: yfeldblum Differential Revision: D5304985 fbshipit-source-id: 7cfb95da5795af61e9307882f71836ef7fa5a463
-
Christopher Dykes authored
Summary: They are intended to be run as separate sets of tests, and the logging tests define multiple mains. Reviewed By: yfeldblum Differential Revision: D5307503 fbshipit-source-id: ed38a762177cec3c600791b861584dd47019b5a9
-
- 24 Jun, 2017 1 commit
-
-
Michael Lee authored
Summary: Resolve two issues with folly's clock_gettime() shim on Apple platforms (iOS, macOS, etc.): When detecting whether folly should define clock_gettime() on Apple platforms, don't assume clock_gettime() is declared in Apple's headers just because MAC_OS_X_VERSION_10_12/__IPHONE_10_0 is defined. Someone might use a newer macOS or iOS SDK (which defines MAC_OS_X_VERSION_10_12/__IPHONE_10_0), but not have clock_gettime() (because _DARWIN_FEATURE_CLOCK_GETTIME isn't set). When defining a shim for clock_gettime(), don't rely on Apple's clock_gettime() declaration. Instead, shadow Apple's declaration with our own. This prevents folly from inheriting Apple's availability and visibility attributes for clock_gettime(). Reviewed By: yfeldblum Differential Revision: D5312574 fbshipit-source-id: f16634ce92ee6c299613d3db22f0537bd31ac14d
-
- 23 Jun, 2017 11 commits
-
-
Kyle Nekritz authored
Summary: So that it is available on other transports. Reviewed By: Orvid Differential Revision: D5302039 fbshipit-source-id: cbfdadd158061ed9a2b3ed3e0960ce66f0d545fd
-
Ilya Maykov authored
Summary: Fix UBSAN failure in atomic_shared_ptr_test by using reinterpret_cast instead of static_cast. Reviewed By: yfeldblum Differential Revision: D5314116 fbshipit-source-id: 8479c9c4bdeeb155067a3de75efe4e97c36519e5
-
Giuseppe Ottaviano authored
Summary: Same as `boost::noncopyable` but it does not disable move constructor/assignment. Reviewed By: luciang Differential Revision: D5311043 fbshipit-source-id: 44fe95712169b95a00e474385be43fa857cfd8ec
-
Christopher Dykes authored
Summary: `long` is only 32-bits on Windows, which means this call to `std::min` was ambiguous, which caused a compile error. Reviewed By: simpkins Differential Revision: D5305964 fbshipit-source-id: 7e4152006e163a0301652be46318f0fc937e5ead
-
Andrew Krieger authored
Summary: exception_wrapper's non-allocating variant was depending on the exception reference being a reference to a heap object, which is not the case on Windows. All thrown exceptions are copied to the stack first. So, we abuse internals of exception_ptr to get the internally heap allocated copy of the object. What could possibly go wrong. Reviewed By: yfeldblum, ericniebler, Orvid Differential Revision: D5270634 fbshipit-source-id: 2983a6af9a2c3cb66cbee8a382707a76b582c489
-
Ilya Maykov authored
Summary: By moving the input shared_ptr instead of copying it, we avoid doing an unnecessary ref count increment + decrement. Reviewed By: djwatson, yfeldblum Differential Revision: D5298467 fbshipit-source-id: b9f0b6999278609417bb4dc062030ca2388ba20a
-
Christopher Dykes authored
Summary: It was missing a portability header needed for `setenv`, and was assuming that the `system_clock` was represented as nanoseconds. On Windows `std::chrono::system_clock` is represented as 100s of nanoseconds, ie. `FILETIME`. Reviewed By: simpkins Differential Revision: D5308182 fbshipit-source-id: facb922ebe1587723358b38499dadac683e3517b
-
Christopher Dykes authored
Summary: MSVC complains about `<:` being a digraph and that it isn't interpreting it as one (C4628). Make it be quiet by making it not look like a digraph. Reviewed By: simpkins Differential Revision: D5305162 fbshipit-source-id: 7385164e8f73226ce18bc04c32894c2f27f8ae25
-
Christopher Dykes authored
Summary: These were using `boost::filesystem::path.native()` in contexts where an `std::string` was the expected output. `boost::filesystem::path.native()` returns a `std::wstring` on Windows, so use `.string()` instead. Reviewed By: simpkins Differential Revision: D5305649 fbshipit-source-id: 3c7cd53d2f33d2dbb222731655cdab69d1c4a187
-
Christopher Dykes authored
Summary: I failed to realize that this helper function also needs to be guarded on `!_WIN32`, because the assertions are false on Windows. Reviewed By: ot, luciang Differential Revision: D5304914 fbshipit-source-id: f2564cb2fcbfdc73a2529d4a41df2995748bc3f6
-
Christopher Dykes authored
Summary: This enables auto-deps support in more places in Folly. It also fixes a couple of auto-deps declarations that were missing an `s`. Reviewed By: yfeldblum Differential Revision: D5289542 fbshipit-source-id: 7d34b29bcc172fb31f91f1ba880864e2d5869ffd
-
- 22 Jun, 2017 6 commits
-
-
Adam Simpkins authored
Summary: Add appropriate specializations for detail::Extract() so that you can pass a plain function pointer to `onError()`. Previously the code only worked with member function pointers and functor-style objects. Reviewed By: yfeldblum, wez Differential Revision: D5286773 fbshipit-source-id: 67b44d1d7573eb1da501475045fd24ad4ab1c074
-
Adam Simpkins authored
Summary: Update the FB_LOG() and XLOG() macros so that FATAL log messages are correctly detected as not returning, by both clang and gcc. We have to ensure that both sides of the log statement check (log message enabled or disabled) evaluate to `[[noreturn]]` expressions. I did try updating the log check itself so that it could be constexpr detected as always passing, but this was not sufficient. Reviewed By: wez Differential Revision: D5290780 fbshipit-source-id: 773a56a8392dfd7c310d5d84fc9311e66edf99cb
-
Aaron Balsara authored
Summary: Currently when calling connect with AsyncSSLSocket in unencrypted mode it still attempts to perform a SSL handshake. Add check to not do SSL. Calling sslConnect will always run the SSL handshake Reviewed By: jrahman Differential Revision: D5153456 fbshipit-source-id: 4d9164115be72c8ee76e383535561e3083a327e3
-
Adam Simpkins authored
Summary: This test has run into occasional failures on continuous build test runs. Unfortunately when something goes wrong it crashes in the std::thread destructor due to this thread still being joinable when it is destroyed, which hides information about what actually failed in the test. This updates the test to immediately detach the thread, so that on error we will be able see the real failure reason. This also increases the size of the message that we write, which will hopefully help ensure that this write always blocks. Reviewed By: wez Differential Revision: D5295574 fbshipit-source-id: ea8cfa855613398f88f9f982c600ec661018a31c
-
Adam Simpkins authored
Summary: Switch all code in the logging library from using `ERROR` to `ERR`, and remove the `ERROR` LogLevel entirely, even if it is not already defined as a macro. Previously the code kept `ERROR` available as a LogLevel name if it had not already been defined as a macro (which is done by common Windows header files). However, this made for inconsistent behavior, and made it easy to write code that would not be portable to Windows. This diff fully drops the `ERROR` name for consistency across platforms. Reviewed By: wez Differential Revision: D5288600 fbshipit-source-id: 8d2d52e955959c278345fc9c2086c7cacf9660f9
-
Adam Simpkins authored
Summary: Add some tests for fatal log messages during static initialization and destruction. Ideally most programs won't actually do much real work before or after main, but make sure the logging framework behaves sanely in these situations. This also fixes a bug in the `test_none()` test, which previously caused it to always succeed without testing the desired behavior. Reviewed By: wez Differential Revision: D5281718 fbshipit-source-id: ca838c098886e99418264acf9a4d651ea9e7502c
-
- 21 Jun, 2017 1 commit
-
-
Maged Michael authored
Summary: - Support empty hazptr_holder, move constructor and assignment operator - Limit thread caching to the default domain to improve performance of thread caching - Fix unnecessary calls to stats singleton - Use the mprotect version of AsymmetricMemoryBarrier for reducing the overhead of bulkReclaim(). - Update read-side benchmark results Reviewed By: djwatson Differential Revision: D5292885 fbshipit-source-id: bc5713ac95492a7114e1e467e71d2278e64b165d
-