- 28 Oct, 2018 1 commit
-
-
Jason Rahman authored
Summary: FutureAwaitable currently does not properly handle the case where an already fulfilled future is awaited on. In particular, await_ready() is based on the value of future_.isReady(), while await_resume() pulls the value from result_, regardless of whether or not result_ has been correctly initialized by the callback registered in await_suspend. When an already fulfilled future is awaited on, await_ready() will return true immediately, and await_suspend() will be bypassed and await_resume() called immediately, throwing an exception since result_ hasn't been initialized. Reviewed By: lewissbaker Differential Revision: D12816274 fbshipit-source-id: f5f697e433c1621f829af6f5509d08bac2229ddb
-
- 27 Oct, 2018 6 commits
-
-
Orvid King authored
Summary: MSVC was complaining very loudly about these being implicitly truncated to `int`s in the initialization of OptionsMap, so declare them as `int`. Reviewed By: yfeldblum Differential Revision: D10861911 fbshipit-source-id: 0d5c52fe4b5e59c5e101546093a13849fe3b2a7a
-
Orvid King authored
Summary: It doesn't exist on Windows, so only include it when it's acutally used. Reviewed By: yfeldblum Differential Revision: D10861997 fbshipit-source-id: 04156a09f2fab83ae3b958c1cbcd41c347d5f9e8
-
Andrew Gallagher authored
Summary: This was actually just incorrectly masking a inconsistency between `folly/memory/Malloc.h` and `<jemalloc/jemalloc.h>` and the proper fix is D10866789. Reviewed By: elsteveogrande Differential Revision: D12207144 fbshipit-source-id: 2ecf818c04c8e124bcfe96433a7269b3deadb502
-
Yedidya Feldblum authored
Summary: [Folly] Fix as_const detection for libc++, which has the function in C++17 mode as of clang-v5 but which does not define the recommended feature-test macro `__cpp_lib_as_const`. (Note: this ignores all push blocking failures!) Reviewed By: ngoyal Differential Revision: D12812804 fbshipit-source-id: 25e01be2688346e9e434a44cf01df142129ae339
-
Xiangyu Bu authored
Summary: Current behavior of OpenSSLCertUtils::readCertsFromBuffer() is that it stops parsing as soon as it encounters the first error. We don't know if the error is EOF or something else. Sometimes we want to reject the result if the buffer is malformed instead of accepting a partially parsed result. This diff makes the API throw when given malformed cert buffer. Reviewed By: anirudhvr Differential Revision: D10467792 fbshipit-source-id: 2c15266e5f00866dfaafe0a5ce88d24459e8b561
-
Andrii Grynenko authored
Summary: Adding support for SemiFutures with deferred work. Reviewed By: yfeldblum Differential Revision: D12812057 fbshipit-source-id: 7da73124d27063eb730be1abe134ae9838494af0
-
- 26 Oct, 2018 3 commits
-
-
Lee Howes authored
Summary: Part of the larger project to modify Future<T>::then to be r-value qualified and use Future<T>::thenTry or Future<T>::thenValue. The goal is to disambiguate folly::Future and to improve type and lifetime safety of Future and its methods. Codemod: future<T>.then(callable with operator()(not-a-try)) to future<T>.thenValue(callable with operator()(not-a-try)). future<T>.then(callable with operator()()) to future<T>.thenValue(callable with operator()(auto&&)). future<T>.then(callable with operator()(auto)) to future<T>.thenValue(callable with operator()(auto)). future<T>.then(callable with operator()(folly::Try<T>)) to future<T>.thenTry(callable) Reviewed By: Orvid Differential Revision: D10859128 fbshipit-source-id: 6df42d7d9bee324a118c114ff7ada76f93d94268
-
Aaryaman Sagar authored
Summary: FunctionRef was lacking benchmarks, this adds a couple very basic ones to compare against strategies like std::function, std::function with std::reference_wrapper and folly::Function. With small and large closures Reviewed By: yfeldblum Differential Revision: D10863252 fbshipit-source-id: 40c3296095c693830d9fe6b4488f4708d4916af6
-
Song Zhou authored
Reviewed By: yfeldblum Differential Revision: D10851133 fbshipit-source-id: 72493988c4d32011b1ee76af7191d3bbe5fe43b2
-
- 25 Oct, 2018 6 commits
-
-
David Lam authored
Summary: Would help make these types of errors easier to debug Reviewed By: yfeldblum, ot Differential Revision: D10857148 fbshipit-source-id: fbb1defbde2f3695e91da92ca502c0a0aed4c7ec
-
Orvid King authored
Summary: This test is the definition of how not to write a reliable test, resulting in extreme flakyness and timeouts, so nuke it. Reviewed By: yfeldblum Differential Revision: D10856270 fbshipit-source-id: d8b585d439c091e763075a604d2fe21b517ae93c
-
Jatin Kumar authored
Summary: Cognitive overhead of remembering to use mode/opt while running benchmarks is just too much and easy to forget. Adding a warning message at the bottom of the benchmark result output so that the user gets a signal. Reviewed By: yfeldblum Differential Revision: D10274914 fbshipit-source-id: a84932fa16744da9bd025ed5b01df14f95550145
-
Harsh Poddar authored
Summary: There is a bug in the coloring logic which leads to the color not being cleared after statement until we log a message with INFO severity. Reviewed By: yfeldblum Differential Revision: D10519966 fbshipit-source-id: 9606f24c3436eb11f3f2e313dfe5dea81d3681db
-
Yedidya Feldblum authored
Summary: [Folly] Add bidi support to IteratorFacade Reviewed By: aary Differential Revision: D10477733 fbshipit-source-id: 6779580a4fdea88d29fb51454da04c9605b026bb
-
Lee Howes authored
Summary: Remove the form of Future::then that could take a continuation with no parameters, to force consistent use of parameters. This form was already deprecated. Reviewed By: Orvid Differential Revision: D10219141 fbshipit-source-id: 4f8bdeaf617d8e78a5c85aa1374f6a0d38d63da9
-
- 24 Oct, 2018 6 commits
-
-
Adam Simpkins authored
Summary: Switch from `-std=gnu++14` to `-std=gnu++1z` This is required in order to allow downstream projects that use folly to build with `-std=gnu++1z`. The linkage for how constexpr variables are emitted has changed between `gnu++14` and `gnu++1z`. If folly is compiled with `gnu++14` but downstream dependencies try to build with `gnu++1z` they will get link errors (multiple definitions) for constexpr variables defined in folly header files. The reverse (compiling folly with `gnu++1z` but downstream projects with `gnu++14`) does not seem to cause any problems. Nonetheless, I have provided `CXX_STD` as a CMake option so that users can override this setting if it does cause any problems for some reason. Reviewed By: yfeldblum Differential Revision: D10448691 fbshipit-source-id: c44f568a7ff175c432865badeaaa9b3ebbaf8987
-
HC Zhu authored
Summary: Simply the code a little bit. Reviewed By: yfeldblum Differential Revision: D10609398 fbshipit-source-id: 055f6fd7fb9f5768df7b0b2b28071fa53181a838
-
Lewis Baker authored
Summary: Declare folly::SpinLock constructor and methods as noexcept so that types that have a compiler-generated default-constructor (like folly::Synchronized) get a noexcept default constructor. Also declare methods on folly::MicroSpinLock and folly::detail::Sleeper as noexcept. Reviewed By: yfeldblum Differential Revision: D10518727 fbshipit-source-id: 8582fd8b3893ad25ef736bd7a63465872ebe67af
-
Lewis Baker authored
Summary: This ability to eagerly start a folly::coro::Task by calling .scheduleVia() introduced a potential race between the operation completing concurrently on another thread and the current thread then subsequently co_awaiting the returned folly::coro::Future. Thus the implementation of coro::Task's promise_type required the use of an atomic variable to decide this race. This diff eliminates the need for that synchronisation by separating the step of associating the task with an executor from the step of launching the task so that the Task is always lazily started. The folly::coro::Task<T>::scheduleVia() method has now been replaced with a .scheduleOn() method that returns a folly::coro::TaskWithExecutor<T>. The TaskWithExecutor<T> type is awaitable and will schedule the Task's execution on the bound executor when it is awaited. Also fixes a cyclic dependency issue between Promise.h and Task.h/Future.h by merging them all into Task.h. folly/futures/Future.h now defines the `folly::coro::toSemiFuture()` function for wrapping an Awaitable up into a `folly::SemiFuture<T>`. The `folly::coro::Future<T>` type and folly/experimental/coro/Future.h header has been removed. Reviewed By: andriigrynenko Differential Revision: D9948564 fbshipit-source-id: 21c9ee1ec0e67d56321629b5901c3eb7cddcfe9b
-
Cornel Rat authored
Summary: Looks like switching to F14 speeds up RequestToken creation by ~25% in some projects. Reviewed By: yfeldblum Differential Revision: D10518982 fbshipit-source-id: bf924a0a86f940f7ed36526ca6eda4fe1421f5f8
-
Wez Furlong authored
Summary: This addresses a hilarious but hard to trace build problem on macOS. The issue is that the build manages to resolve `folly/String.h` in place of `string.h` and breaks compilation of `<cstring>` and all that include it. The resolution is to ensure that we generate a subdir for the cmake build. Reviewed By: simpkins Differential Revision: D10520960 fbshipit-source-id: 9bebeda69c6e28ebca146f9b96ee01bedd2d6ef1
-
- 23 Oct, 2018 1 commit
-
-
Nathan Bronson authored
Summary: Sized deallocation makes it faster for jemalloc to locate an allocation's metadata. Accessing this functionality via ::operator delete(void*,size_t) is both portable and a bit more direct than calling sdallocx after a dynamic jemalloc check. This diff adds small functions allocateBytes and deallocateBytes that are replacements for folly::checkedMalloc and free (and should be paired), to localize the #ifdef. Reviewed By: marksantaniello Differential Revision: D10496934 fbshipit-source-id: eb193e1c315ca88286126f5eb68c705301ad5177
-
- 22 Oct, 2018 5 commits
-
-
Maged Michael authored
Summary: Remove obsolete version of hazard pointers under folly/experimental. Current version is under folly/synchronization. Reviewed By: djwatson Differential Revision: D10441558 fbshipit-source-id: 36ef42f83a857ce4bdfff8b64cf9dcc179e0c804
-
Adam Simpkins authored
Summary: Add the current source and build directories to the very front of the include directory list. This ensures that folly finds its own local headers first, even if the install directory already contains an older version of the folly headers. Even though the install directory was appended to the include list after the current source directory in this statement, it could have ended up already in the include list if other dependencies (e.g., glog or gmock) were found in that directory. Reviewed By: Orvid Differential Revision: D10448692 fbshipit-source-id: 539613a055db41d6115f8d04c5f6fa90841a414f
-
Kirk Shoop authored
Summary: put pushmi inside the folly namespace. NOTE: we discussed in the team and decided that we preferred to have a sub-namespace for pushmi Reviewed By: yfeldblum Differential Revision: D10455165 fbshipit-source-id: d0131d96172a14746971e2de7dbac7bb10604229
-
Jeroen Vaelen authored
Reviewed By: ddrcoder Differential Revision: D10461414 fbshipit-source-id: 75c6ddc7979ade91917cacb0b58038bbde51172a
-
Jeroen Vaelen authored
Summary: The error was pointing to a file that does not exist. Reviewed By: ddrcoder, Orvid Differential Revision: D10461496 fbshipit-source-id: 4a282db547ad0924da23ea1b7652cf702599acab
-
- 20 Oct, 2018 2 commits
-
-
Yiding Jia authored
Summary: When using clang, libc++, and c++17, merely mentioning a Range with a non-pod value-type will give a compile error due to a static assert while attemption to instantiate a basic_string_view. Using a StrictConjunction seems to fix this issue. Reviewed By: yfeldblum Differential Revision: D10472408 fbshipit-source-id: 28d50d0a99994049bfcd9ac29168fb2f1d1c5867
-
Andrii Grynenko authored
Reviewed By: yfeldblum Differential Revision: D10458805 fbshipit-source-id: 6a36ecdc4de3e20115cf3d4805448e2713af1956
-
- 19 Oct, 2018 9 commits
-
-
Doron Roberts-Kedes authored
DeterministicSchedule: Make the data_ field of Deterministic Atomic come from a class template param. Summary: see title. Reviewed By: yfeldblum Differential Revision: D10467678 fbshipit-source-id: b407cfa3c0cd1100b1f8f01ff8f2fee1f2a99ecb
-
Doron Roberts-Kedes authored
Summary: See title. Reviewed By: yfeldblum Differential Revision: D10418223 fbshipit-source-id: 262c92581ba6b36741f647e6cde624a4372436cf
-
Kudo Chien authored
Summary: According to this https://github.com/android-ndk/ndk/issues/647, posix_memalign may not exist on Android API 16. From Android NDK r17c, the API exists for Android API 17+. ``` #if __ANDROID_API__ >= 17 int posix_memalign(void** __memptr, size_t __alignment, size_t __size) __INTRODUCED_IN(17); #endif /* __ANDROID_API__ >= 17 */ ``` Change the code to use posix_memalign only after Android API 17+. This would also fix issue for OSS React Native to pack latest folly and building with clang. See: https://github.com/facebook/react-native/issues/20302 and https://github.com/facebook/react-native/issues/20342 Pull Request resolved: https://github.com/facebook/folly/pull/953 Reviewed By: yfeldblum Differential Revision: D10469757 Pulled By: Orvid fbshipit-source-id: c63838f3f6e723ef3de77187f39597a4063043db
-
Gisle Dankel authored
Summary: I noticed during testing that jemalloc requests a lot more memory than is allocated by the application. This is particularly the case for allocations >4k. If the allocation is <2MB it asks for an extra 2MB region that is not used for allocated memory, and if the request is >2MB then an extra region of the same size is requested in the extent hook. Turns out the issue was that I didn't set *commit to true in the alloc hook, causing an interesting sequence of events to occur. Another issue is that when running out of space and falling back to the default hook, subsequent requests would increase in size forever. The solution here was to set the jemalloc retain grow limit. Finally, fixed a bug when reserving more than 4GB memory (size calculation was truncated to 32 bits). Reviewed By: interwq Differential Revision: D10316308 fbshipit-source-id: af47438029e85c03bf51c8d132b88de551f493f1
-
Andrew Gallagher authored
Summary: `folly/memory/Malloc.h` is generally used as a shim for the JEMalloc headers, providing weak declarations of JEMalloc functions so that they can be referenced in library code that may or may not be linked with JEMalloc at build/run time. This adds a few more macro definition stubs for when JEMalloc isn't available. Reviewed By: yfeldblum Differential Revision: D10395893 fbshipit-source-id: 7b45714297acd85afd3b222687feeda491fcb46d
-
Yedidya Feldblum authored
Summary: [Folly] Assignment operators for `sorted_vector_set` and `sorted_vector_map` from `std::initializer_list`. Reviewed By: nbronson Differential Revision: D10457311 fbshipit-source-id: cd50963066ee89f2aa314b7cad089242fbc10d84
-
Teng Qin authored
Summary: We need to determine the size of the Tracepoint arguments in the Macro. The only exception that we can not simply take `sizeof` is arrays, where `sizeof` will return size of the array where we really want is size of a pointer. Before we specifically check this with `FOLLY_SDT_ISARRAY` which checks if `__builtin_classify_type` of the argument is 14. However in recent update of LLVM, some arrays will be reported with type 5 (pointer type). Originally we didn't add that because we thought if the type of the argument is already a pointer then just take a `sizeof` on it would still be correct. This Diff fixes the issue. LLVM change in question is https://reviews.llvm.org/rL333126 Reviewed By: taewookoh Differential Revision: D10453657 fbshipit-source-id: 154fdfc78fe6438cd66cf256203c8d174773c1a8
-
Yedidya Feldblum authored
Summary: (as title) Reviewed By: LeeHowes Differential Revision: D10453926 fbshipit-source-id: f48d1fb672e3c65b7240c255c8ef7437a38a856c
-
Yang Chi authored
Summary: support one more params into the folly tracing macro Reviewed By: yfeldblum Differential Revision: D10451431 fbshipit-source-id: 8ae7356b38b46c9c653a7d87c507048eba353414
-
- 18 Oct, 2018 1 commit
-
-
Darrin D'Mello authored
Summary: Minor code cleanup. Reviewed By: yfeldblum Differential Revision: D10430502 fbshipit-source-id: d4892baf695089458295550767b3eca1af20ca32
-