- 11 Jan, 2018 5 commits
-
-
Yedidya Feldblum authored
Summary: [Folly] `MemoryIdler::futexWaitUntil`. Adds `MemoryIdler::futexWaitUntil` that works like `Futex::futexWaitUntil`, in a similar way that `MemoryIdler::futexWait` works like `Futex::futexWait`. Removes the ability to customize the idle-timeout clock for `MemoryIdler::futexWait` as a side-effect; the idle-timeout is now a pure duration. Now, the clock used with the idle-timeout is the same as the normal deadline clock, so the idle-timeout clock can be set for `MemoryIdler::futexWaitUntil` by providing a deadline with that clock type. This normally would not matter, but it affects the unit-tests. Reviewed By: djwatson Differential Revision: D6681679 fbshipit-source-id: e3cf6e71d7530c5877a834b318b423eb91f71eb9
-
Dave Watson authored
Summary: stop_ can be relaxed everywhere, it implies only an asynchronous signal, not any sort of memory barrier. Reviewed By: davidtgoldblatt Differential Revision: D6690079 fbshipit-source-id: 6f193204e1619f9a8adf81db2d46d05954bfbf85
-
Yedidya Feldblum authored
Summary: [Folly] Cut the `ScopeGuard` alias now that we have `auto`. This form works because of hidden lifetime extension: ```lang=c++ folly::ScopeGuard guard = folly::makeGuard([] { /*...*/ }); // ... // guard falls out of scope ``` But this form would not work correctly: ```lang=c++ folly::ScopeGuard guard = folly::makeGuard([] { /*...*/ }); std::async(std::launch::async, [guard = std::move(guard)] {}); ``` Because `folly::ScopeGuard` is an rvalue-reference-to-base. We have `auto`, so just remove `folly::ScopeGuard`. This form works correctly: ```lang=c++ auto guard = folly::makeGuard([] { /*...*/ }); std::async(std::launch::async, [guard = std::move(guard)] {}); ``` Reviewed By: igorsugak Differential Revision: D6690070 fbshipit-source-id: 54e32b300d36fce4eb95a59f1828819afe312ec0
-
Yedidya Feldblum authored
Summary: [Folly] Move `ScopeGuardImpl` and `ScopeGuardImplBase` into the `detail` namespace. Let them be marked as private implementation details. Reviewed By: andrewjcg Differential Revision: D6665317 fbshipit-source-id: 03e8fee6a16338395ec92c582613b053bd9f74ec
-
Yedidya Feldblum authored
Summary: [Folly] Stop using `ScopeGuardImpl` in `DynamicParser`. `ScopeGuardImpl` is an impl type that should not be treated as public. Reviewed By: igorsugak Differential Revision: D6689835 fbshipit-source-id: aea6c985e40887594c0aeb0c0948fa77c149a89b
-
- 10 Jan, 2018 18 commits
-
-
Yedidya Feldblum authored
Summary: [Folly] `folly::Init`, RAII variant of `folly::init`. Use it in `main` used by unit-tests. Reviewed By: ot Differential Revision: D6566358 fbshipit-source-id: fb8e5a18fc43eb65e2cbeb070d97094bd413bb96
-
Maged Michael authored
Summary: Manage retirement of removed segments using hazptr_obj_batch in order to reduce the chances of fragmenting related segments across thread local lists of retired objects of many threads, which could lead to unnecessarily high memory usage. Reviewed By: djwatson Differential Revision: D6686697 fbshipit-source-id: 0d786c0f9e0bac2c44183ed3da21619e1feb3d52
-
Adam Simpkins authored
Summary: Since std::array is actually a struct containing an array it technically requires double braces around its initializer. The language allows eliding these braces, and clang doesn't complain about only using a single brace, but gcc does when using `-Wmissing-braces`. Reviewed By: yfeldblum Differential Revision: D6695289 fbshipit-source-id: 913fcfbea4164a02d001bd2344e340c0b6ee62aa
-
Yedidya Feldblum authored
Summary: [Folly] Let `Futex` import base-class ctors. Rather than needing to define ctors and inherit `boost::noncopyable`. Reviewed By: WillerZ Differential Revision: D6674054 fbshipit-source-id: 59e0a4815682b227346954fe47c6eda49e3ad62f
-
Maged Michael authored
Summary: Provide capability for custom batching retirement of objects, for example object that belong to the same data structure, to avoid the risk fragmenting related objects across thread local lists of retired objects of many threads, which could lead to unnecessarily high memory usage. Reviewed By: djwatson Differential Revision: D6686603 fbshipit-source-id: fadcade73e71170ef1bcec221c4da6f4ddeecff5
-
Yedidya Feldblum authored
Summary: [Folly] Tweak `FutexResult` comments. Reviewed By: nbronson Differential Revision: D6673979 fbshipit-source-id: 1777311cd93d5a83432c4ebb48a8432a1c504ca9
-
Yedidya Feldblum authored
Summary: [Folly] `Futex::futexWait` returns `FutexResult`. Reviewed By: nbronson Differential Revision: D6673871 fbshipit-source-id: 378c69d8362970e985da31e31d8e9b0179d2917f
-
Yedidya Feldblum authored
Summary: [Folly] Support for all clock types in `Futex`. Only `system_clock` and `steady_clock` remain optimal as before, but at least let `Futex` work, even if non-optimally, for all clock types. Reviewed By: nbronson Differential Revision: D6673741 fbshipit-source-id: 0a0f778f61b71bea76e12b7fab478e33ce3bbaae
-
Yedidya Feldblum authored
Summary: [Folly] Use ptr-to-`const` in `Futex`. Reviewed By: igorsugak Differential Revision: D6673723 fbshipit-source-id: b828c2284b40ec8166e823eca7725beccd330f87
-
Yedidya Feldblum authored
Summary: [Folly] Fix some copyright lines in `folly/detail/` and `folly/test/`. Differential Revision: D6673878 fbshipit-source-id: 6c060a974bb4d40d0f24a44ebddddf892805c65e
-
Yedidya Feldblum authored
Summary: [Folly] Baton support for wait-options Reviewed By: nbronson Differential Revision: D6591168 fbshipit-source-id: beca8422ac0daa572fb43c371923a86f199999f9
-
Yedidya Feldblum authored
Summary: [Folly] Timed wait operations for spin-only `Baton`. Enables `try_wait_for` and `try_wait_until` for `Baton</* MayBlock = */ false, /*...*/>`. Reviewed By: nbronson Differential Revision: D6672153 fbshipit-source-id: 95da07260b21c2b88b8f7bf81cbfcbe5f5099ac0
-
Adam Simpkins authored
Summary: Update `getXlogCategoryNameForFile()` to keep the file name suffix (e.g., `.h` or `.cpp`) in the category name. Previously the code had stripped this out. However it seems worth leaving it in: - This makes it possible to independently control log levels for messages from the header file vs the cpp file. - This makes the category name logic slightly easier to explain to users. The documents I added in D6525997 already describe this new category name selection behavior. This change updates the code to match the documented behavior. Reviewed By: yfeldblum Differential Revision: D6690464 fbshipit-source-id: 9af6b549d084bd900f788a08e9213e82579b664a
-
Adam Simpkins authored
Summary: Define INFO0 through INFO9 levels for users that want to have finer-grained control over info log messages. This also renumbers the DBG log levels slightly so that there are exactly 1000 levels between each major log level step. This renumbering change should not affect any code behavior, since these level values are primarily used in memory and aren't saved persistently anywhere. Reviewed By: yfeldblum Differential Revision: D6690466 fbshipit-source-id: acd499cff6830a1d1b579f295bd4b2bac93b5ada
-
Adam Simpkins authored
Summary: I ran into some open source projects that define `DEBUG` as a preprocessor macro on the compiler command line. (They effectively defined it as the opposite of `NDEBUG`.) Doing some Google searches revealed that there are a number of projects that appear to use this as a macro. Therefore this diff renames the `DEBUG` log level enum value to `DBG` to avoid potentially conflicting with projects that do use `DEBUG` as a macro name. I did keep the behavior that `logLevelToString()` returns "DEBUG" for an input of `LogLevel::DBG`. Reviewed By: yfeldblum Differential Revision: D6690465 fbshipit-source-id: 35bb1698afb45eb670e60c192f21390cbf09331d
-
Giuseppe Ottaviano authored
Summary: When compiling without optimizations binding the proxy by reference is slightly faster (no differences in opt mode), so change the documentation to recommend this syntax. The proxy can still be bound by `auto`, `const auto`, and `const auto&`, in all case behaving as expected and with no overhead in opt mode. Added a test to make sure these all work. Reviewed By: yfeldblum, luciang Differential Revision: D6688958 fbshipit-source-id: 7c6b460a01708786bda7614546fa2e1667f27299
-
Giuseppe Ottaviano authored
Reviewed By: yfeldblum, WillerZ Differential Revision: D6682606 fbshipit-source-id: 5a203a849e96d3020cf9ad2669451122954c2199
-
Adriana Libório authored
Summary: title Created from Diffusion's 'Open in Editor' feature. (Note: this ignores all push blocking failures!) Reviewed By: Sushisugre Differential Revision: D6688367 fbshipit-source-id: 6e2f2d3fcb897fe78c1caef841515856b1f2bd42
-
- 09 Jan, 2018 4 commits
-
-
Dan Melnic authored
Summary: Return if we handle any error messages to avoid unnecessarily calling recv/send Reviewed By: yfeldblum Differential Revision: D6677314 fbshipit-source-id: 21f724bb2c92b954888ba97bf7820d72decd2775
-
Dave Watson authored
Summary: Use new ParkingLot API in futex. Reviewed By: yfeldblum Differential Revision: D6595853 fbshipit-source-id: 7024ac1d3e0c5958a651a3e33c1427038bbe7808
-
Dave Watson authored
Summary: Batching reference counts reduces the maximum number of atomic_shared_ptrs available to the system (and also shared_ptrs). Add a check, test, and some comments about it. Reviewed By: yfeldblum Differential Revision: D5916291 fbshipit-source-id: 0bbf7b43284d94a304201219883c82b3654c1585
-
Maged Michael authored
Summary: Adjust the segment size of the `UnboundedQueue` to 64 instead of 256, a size more suitable for CPUThreadPoolExecutor::CPUTask elements. Reviewed By: djwatson Differential Revision: D6665918 fbshipit-source-id: c34c4fa936ee5c6d6a3dd4489129c936369f3980
-
- 08 Jan, 2018 5 commits
-
-
Eric Niebler authored
Summary: This makes sure that whether folly is statically or dynamically linked, all folly exception types will have exactly one definition, and one set of type information. Reviewed By: mzlee Differential Revision: D6671431 fbshipit-source-id: 1c06826a05f87cbf9af747c9abdb5f524744d054
-
Keith Daigle authored
Summary: Found that testing would fail on aarch64 since mmx is an Intel thing. Changed it to just check for x64. Reviewed By: yfeldblum Differential Revision: D6670050 fbshipit-source-id: 6ce4b45bb5ef02d65305636d6ac28be7631ddf1b
-
Chad Austin authored
Summary: D6617812 wants to build a StringPiece from a literal with an embedded nul. Add a test to verify that _sp is suitable for this use case. Reviewed By: yfeldblum Differential Revision: D6651024 fbshipit-source-id: be4fb875762829fdb61c57fa72954fef286e9df0
-
Neel Goyal authored
Summary: ERR_error_string will use a static buffer if none is provided. This is unsafe in threaded envs when we build a string out of it later. Switch this to use ERR_error_string_n Reviewed By: yfeldblum, knekritz Differential Revision: D6664958 fbshipit-source-id: 2071347373ac61ebc28296fa66845cd718172b5e
-
Yedidya Feldblum authored
Summary: [Folly] Remove gcc-v4.7 support from `MemoryIdler`. As of gcc-v4.8, `std::is_trivial<std::chrono::duration<Rep, Period>>::value` holds. We no longer need any extra support. Reviewed By: meyering Differential Revision: D6673517 fbshipit-source-id: f28b2d126f113547ebf36c85f9fa37a5d944d65b
-
- 07 Jan, 2018 1 commit
-
-
Yedidya Feldblum authored
Summary: [Folly] Terminal comma for `FutexResult` enumerators. Style nit. Reviewed By: meyering Differential Revision: D6673523 fbshipit-source-id: abf9f4d3e99bf9a6d3042a49252b1b1190e69b9f
-
- 06 Jan, 2018 3 commits
-
-
Yedidya Feldblum authored
Summary: Use `auto` for scope-guard locals v.s. `folly::ScopeGuard`. Reviewed By: igorsugak, meyering Differential Revision: D6664915 fbshipit-source-id: ea239b712f3f9dc7ef81105aaf82f4b36bc07db5
-
Eric Niebler authored
Summary: Default constructors are strange and often unexpected. Refactor. Reviewed By: yfeldblum Differential Revision: D6667480 fbshipit-source-id: 24c456c46c846c61e28f1a88806d7c36d9192493
-
Maged Michael authored
Summary: Change the threshold for pushing privately held retired object to the domain to a moderate constant instead of using the threshold for bulk reclamation which is too high for this purpose. Reviewed By: djwatson Differential Revision: D6665904 fbshipit-source-id: 0b090884843b0296a93af7994f7183f41c00000e
-
- 05 Jan, 2018 4 commits
-
-
Yedidya Feldblum authored
Summary: [Folly] `Synchronized::exchange`, for assigning a new value and returning the old value. (Note: this ignores all push blocking failures!) Differential Revision: D6653482 fbshipit-source-id: 68f4bd330bc2cf37bb92aff98b8ce3221334112e
-
Yedidya Feldblum authored
Summary: [Folly] Fix copyright lines in `folly/synchronization/Baton.h`. Reviewed By: meyering Differential Revision: D6665595 fbshipit-source-id: 84aa0c475f01c858d543a047103437c083b3a4ed
-
Mingtao Yang authored
Summary: Adds wording indicating that it is safe to call this function multiple times. Reviewed By: yfeldblum Differential Revision: D6625530 fbshipit-source-id: 2305f7b8e3451a6663003d23230b22c6f65a3729
-
Yedidya Feldblum authored
Summary: [Folly] Cut `glog` include from `folly/synchronization/RWSpinLock.h`. Reviewed By: meyering Differential Revision: D6659300 fbshipit-source-id: 0f1b79d98be0656694f57667252a16acd54e2414
-