- 14 Sep, 2020 3 commits
-
-
Songqiao Su authored
Summary: As the main purpose of write callback is to signal the buffer is on longer needed and may be released (https://fburl.com/diffusion/ahbbb6oy). Release the buffer then calling the write callback seems more reasonable Differential Revision: D23411380 fbshipit-source-id: c9b421716368253eafb4ecb8b72f48c8b47c2f9f
-
Stepan Palamarchuk authored
Summary: This API allows for an easier way to configure EventBase without a need to introduce yet another constructor with variable amount of arguments. In particular, we have an ad-hoc constructor for overriding just the wheel timer interval, but it's not possible to override it in other constructors. Reviewed By: yfeldblum Differential Revision: D23511659 fbshipit-source-id: 2f8de3a527ee07dbf2dc19f2e369014793d906c1
-
Luca Niccolini authored
Summary: needed by a few projects [wangle, mvfst, proxygen] it's already in lfs https://www.internalfb.com/intern/diffusion/FBS/browse/master/fbcode/tools/lfs/.lfs-pointers?lines=41 Reviewed By: mzlee Differential Revision: D23676343 fbshipit-source-id: 0fa04d4224f27e756f683924af0c21ea63a90647
-
- 13 Sep, 2020 3 commits
-
-
Lee Howes authored
Summary: Fixes across the codebase to allow for r-value qualified getVia. Change is behaviour neutral - getVia is already destructive internally. Reviewed By: yfeldblum Differential Revision: D23605722 fbshipit-source-id: 75dfe6faca1c888eae9b262552372dd557eb6933
-
Mohammed Das authored
Summary: Moving CoReturn and CoThrow helpers for use with GTest. CoReturn() and CoThrow() work similar to Return() and Throw() provided in GTest framework. Reviewed By: yfeldblum Differential Revision: D23502840 fbshipit-source-id: 3e5f35135d8291543b91d3615e86398d794a7ba9
-
Chad Austin authored
Summary: Enable FOLLY_USE_SYMBOLIZER on macOS and teach SafeStackTracePrinter to use `backtrace_symbols_fd` on non-ELF platforms. Reviewed By: luciang Differential Revision: D23017169 fbshipit-source-id: 1ad6cbf6d9ad11276d95b821095e37a86c8bb862
-
- 12 Sep, 2020 2 commits
-
-
Michael Lee (Engineering) authored
Summary: Before: While the Xcode constants are pretty well standardized, discoverability and use within folly is non-trivial. We have constants for various other attributes about the OS and target platform, so add a sane mapping for Apple targets as well. Reviewed By: yfeldblum Differential Revision: D23605949 fbshipit-source-id: cd4212dd30d9ec6a3c48a6d7a787a67fdeb9dd1f
-
Yedidya Feldblum authored
Summary: [Folly] Some static-asserts in `Executor::KeepAlive`: standard-layout, pointer-size, pointer-align. Reviewed By: LeeHowes Differential Revision: D23656740 fbshipit-source-id: ff6c5aa3de01a37144fe8ef0961f06d13938654a
-
- 11 Sep, 2020 4 commits
-
-
Lee Howes authored
Summary: For consistency with get() make getTryVia r-value qualified and move the result out. This has the benefit of removing surprise copies in code that already operated on a temporary future but ended up with an l-value reference to copy from as a result of this operation. Reviewed By: ispeters Differential Revision: D23610051 fbshipit-source-id: a11344b9c8680f9498abc307ba1c7c793e3403e1
-
Yedidya Feldblum authored
Summary: [Folly] Cut explicit `main` from test programs in `folly/gen/test/` and prefer the linked-in version. Reviewed By: simpkins Differential Revision: D23643891 fbshipit-source-id: 20152ae4feeeccd43038580043d45759c39c075c
-
Ivan Egorov authored
Summary: This makes sense on systems without `backtrace` and with LLVM libunwind implementations. Reviewed By: yfeldblum Differential Revision: D23625739 fbshipit-source-id: 6ec50c94c73bda227118ffc36d6856bcd8dd0d8b
-
Nathan Bronson authored
Summary: `std::shared_ptr` has an aliasing constructor, but `std::weak_ptr` has none. This diff implements a helper function that implements the functionality. For libstdc++ it uses ABI-specific hacks to avoid the need to construct a temporary `std::shared_ptr`. Reviewed By: yfeldblum Differential Revision: D23580416 fbshipit-source-id: 71712270519b0e7522d8019a5c356679c7dc5397
-
- 10 Sep, 2020 8 commits
-
-
Yedidya Feldblum authored
Summary: [Folly] Decay char-array and trivial args to `throw_exception` and `terminate_with`. The motivation is to ensure smaller call-site code size in the common cases, where the solitary argument is a string literal. Extend to cases where arguments are numbers and the like as well, since that is simple enough and is something that `Function` already does. Reviewed By: aary Differential Revision: D23550096 fbshipit-source-id: d3a2066dc28dc4cfac6b65e2b8972613ce55d06c
-
Yedidya Feldblum authored
Summary: [Folly] `byte`, backported from `std::byte` in C++17. Reviewed By: Alfus, vitaut Differential Revision: D23535105 fbshipit-source-id: 056c634362b2ca226306a97ae9994a4631d07ee5
-
Orvid King authored
Summary: In newer versions of the windows STL, this gets included in <thread>, so explicitly include it in Unistd.h and remove the definition of getpid. Reviewed By: yfeldblum Differential Revision: D23498073 fbshipit-source-id: 5fe07dbbaa9fb1bf5c904286bd15beccbf1d1615
-
Yedidya Feldblum authored
Summary: [Folly] Revise invoke to be an invoker rather than a function, and therefore insusceptible to ADL, and revise invocability traits for compile-time perf. Do the same for apply and applicability traits. Reviewed By: Mizuchi Differential Revision: D23334895 fbshipit-source-id: 4d3241a3f34a7bede44f8ab54a30a3074d9fd3ed
-
Yedidya Feldblum authored
Summary: [Folly] Tweaks to hash primitives: twang, jenkins_rev, fnv Reviewed By: ot, luciang Differential Revision: D23290185 fbshipit-source-id: 080dfa8a5f357065473f3973654c91d01c683c3c
-
Robin Cheng authored
Summary: When grabbing an iterator when the map is empty, size is zero but we still create a copy of the elem_ pointer which is invalid to do when the size is zero (since the writer could overwrite the pointer upon first insertion). This diff checks whether the iterator would be empty and if so avoid grabbing that pointer. Reviewed By: yfeldblum Differential Revision: D23520616 fbshipit-source-id: 5b3f2bc3a9b935920e7fd616e64fadafd7775a75
-
Robin Cheng authored
Summary: Honestly I haven't spent time to understand why this order needs to be acq_rel, but (1) it's the same as the one used in the other keepAliveRelease in this file (2) this ordering is free for read-modify-write operations (3) TSAN said this works :) Reviewed By: yfeldblum Differential Revision: D23495784 fbshipit-source-id: 8bdcafb14b27e6c0f8838ed478364821cd39f9a9
-
Yedidya Feldblum authored
Summary: [Folly] Fix the `reentrant_allocator` internal loop, which when finding a new head node would incorrectly preserve the free `offset` corresponding to the previous head. Hat tip to hpmv for the report. Differential Revision: D23593517 fbshipit-source-id: b4fc701f08056184225e7feac32d60aabf7ea6cc
-
- 09 Sep, 2020 10 commits
-
-
Adam Simpkins authored
Summary: Remove the old `fbcode_builder_config.py` file used by the previous incarnation of fbcode_builder. This file hasn't been used in a while now. Folly instead builds with `build/fbcode_builder/getdeps.py`, which uses the configuration file at `build/fbcode_builder/manifests/folly` Reviewed By: wez Differential Revision: D23591355 fbshipit-source-id: b2e193c7dc54dcf481557984b5833fa92ff4049c
-
Adam Simpkins authored
Summary: Add a small top-level build.sh script that invokes build/fbcode_builder/getdeps.py to perform the build. This primarily helps make the getdeps build process more discoverable to users. Also document this script in README.md Reviewed By: yfeldblum Differential Revision: D23484822 fbshipit-source-id: 6013ace6d80d7d3d80aa87d4c6269ac106814cf0
-
Adam Simpkins authored
Summary: Update the `README.md` file in the fbcode_builder subdirectory to document the current getdeps.py build system rather than the older fbcode_builder scripts that required each project to keep their own python-based build files in their project directory. Reviewed By: chadaustin, wez Differential Revision: D23591356 fbshipit-source-id: 75a099a10793e68a2b59696682010c4dff47ec69
-
Sim Sun authored
Differential Revision: D23489967 (https://github.com/facebook/folly/commit/65bb1505d3f64d9248bc1f7a04abc212db518676) Original commit changeset: db11c9c5946e fbshipit-source-id: 4970fc7de479a51d4acf91b2871ff0c15712130e
-
Adam Simpkins authored
Summary: The code in `FindDoubleConversion.cmake` called `FIND_PACKAGE_HANDLE_STANDARD_ARGS()` with the wrong arguments. The first argument must match the package name: since this file is called `FindDoubleConversion` the first argument must be `DoubleConversion`. Previously this code was passing in `DOUBLE_CONVERSION`, causing it to set `DOUBLE_CONVERSION_FOUND` instead of `DoubleConversion_FOUND`. Since this module did not set `DoubleConversion_FOUND` the `find_package()` call assumed it always succeeded, even when the double-conversion library was not found. Also remove the extra status message. `FIND_PACKAGE_HANDLE_STANDARD_ARGS()` already prints out a status message as long as `find_package()` was called without the `QUIET` argument. Reviewed By: yfeldblum Differential Revision: D23588980 fbshipit-source-id: 8c088930b1b01c027403c3e425f1924f6149f72a
-
Adam Simpkins authored
Summary: Update FindGflags.cmake to work on recent CentOS and RedHat distributions. On these distributions the CMake package configuration installed by the gflags-devel RPM is slightly broken, and sets `gflags_INCLUDE_DIR` to a directory that does not exist. This happens because `/lib64` is symlinked to `/usr/lib64`, and CMake ends up searching `/lib64` before `/usr/lib64` by default when searching for packages. Therefore it finds `gflags-config.cmake` via the `/lib64` symlink. However, `gflags-config.cmake` computes the include directory relative to where its config file was found, and this relative path computation only works when using the actual `/usr/lib64` path where it was installed. When found via `/lib64` it returns a bogus `//include` path that does not exist. This updates `FindGflags.cmake` to verify if the `gflags_INCLUDE_DIR` path actually exists, and set it to a sane location instead. This also updates the code to use the `gflags-shared` target that is exported by the default gflags package configuration if it was only built as a shared library. Pull Request resolved: https://github.com/facebook/folly/pull/1409 Reviewed By: yfeldblum Differential Revision: D23588288 fbshipit-source-id: b68a717953ae0521f568d7bcfd05ca33cd6dc578
-
Chad Austin authored
Summary: FOLLY_USE_SYMBOLIZER is a poor guard for the existence of execinfo.h and backtrace(3), which is widely available on unix platforms, but not available on Android NDK. Instead, introduce FOLLY_HAVE_BACKTRACE and have CMake detect its availability. Reviewed By: yfeldblum, luciang Differential Revision: D23361495 fbshipit-source-id: 4409363f3eaa754977a93e1f006c5911d8e32020
-
Chad Austin authored
Summary: Darwin libc doesn't implement quick_exit, so use std::_Exit instead. Reviewed By: yfeldblum Differential Revision: D23592838 fbshipit-source-id: bda318216239965e14b4c97ca184a2303353ed73
-
Lee Howes authored
Summary: For consistency with get() make getTryVia r-value qualified and move the result out. This has the benefit of removing surprise copies in code that already operated on a temporary future but ended up with an l-value reference to copy from as a result of this operation. Reviewed By: yfeldblum Differential Revision: D23489967 fbshipit-source-id: db11c9c5946edd402103b3aa4140c0a1db5aae5e
-
Raul Tambre authored
Summary: VERSION_GREATER 3.18 also matches 3.18.2, which is wrong as the target argument was only added in 3.19. After noticing that folly requires an ancient CMake version I converted over from VERSION_GREATER_EQUAL and introduced the comparison error. Issue reported [here](https://github.com/facebook/folly/pull/1433#discussion_r484278801). Pull Request resolved: https://github.com/facebook/folly/pull/1439 Reviewed By: yfeldblum Differential Revision: D23564812 Pulled By: Orvid fbshipit-source-id: 19881876147ec73ad70610cf97c408740f998340
-
- 08 Sep, 2020 7 commits
-
-
Matt Ma authored
Summary: From Dwarf4 standard http://dwarfstd.org/doc/DWARF4.pdf#page=53 ```name=2.17.3 Non-Contiguous Address Ranges The applicable base address of a range list entry is determined by the closest preceding base address selection entry (see below) in the same range list. If there is no such selection entry, then the applicable base address defaults to the base address of the compilation unit (see Section 3.1.1). In the case of a compilation unit where all of the machine code is contained in a single contiguous section, no base address selection entry is needed. ``` http://dwarfstd.org/doc/DWARF4.pdf#page=58 ```name=3.1.1 Normal and Partial Compilation Unit Entries Compilation unit entries may have the following attributes: 1. Either a DW_AT_low_pc and DW_AT_high_pc pair of attributes or a DW_AT_ranges attribute whose values encode the contiguous or non-contiguous address ranges, respectively, of the machine instructions generated for the compilation unit (see Section 2.17). A DW_AT_low_pc attribute may also be specified in combination with DW_AT_ranges to specify the default base address for use in location lists (see Section 2.6.2) and range lists (see Section 2.17.3). ``` http://dwarfstd.org/doc/DWARF4.pdf#page=61 ```name=3.1.1 Normal and Partial Compilation Unit Entries The base address of a compilation unit is defined as the value of the DW_AT_low_pc attribute, if present; otherwise, it is undefined. If the base address is undefined, then any DWARF entry or structure defined in terms of the base address of that compilation unit is not valid. ``` http://dwarfstd.org/doc/DWARF4.pdf#page=52 ```name=2.17 Code Addresses and Ranges - 2.17.1 Single Address When there is a single address associated with an entity, such as a label or alternate entry point of a subprogram, the entry has a DW_AT_low_pc attribute whose value is the relocated address for the entity. While the DW_AT_entry_pc attribute might also seem appropriate for this purpose, historically the DW_AT_low_pc attribute was used before the DW_AT_entry_pc was introduced (in DWARF Version 3). There is insufficient reason to change this. ``` Reviewed By: luciang Differential Revision: D23422082 fbshipit-source-id: 4de79fa81e6c323095bb7c79faf87369998138c6
-
Giuseppe Ottaviano authored
Summary: Avoid an expensive `__vdso_getcpu` on every `get()`. Reviewed By: terrelln Differential Revision: D23469601 fbshipit-source-id: 6c7e62a136b7cd80baab6dcfb10cba13a2e472c0
-
Maged Michael authored
Summary: The function folly::get_cached_pid() saves and reuses the result of calling getpid(). At fork, the value is updated for the child process. It is thread-safe. The first call is async-signal-unsafe but subsequent calls are async-signal-safe. Reviewed By: yfeldblum, davidtgoldblatt Differential Revision: D23433702 fbshipit-source-id: a026300206c1726fc1c2c6a588828f2e6559c4e2
-
Lee Howes authored
Add getTry back into folly::Future, with blocking behaviour consistent with get() and with SemiFuture::getTry(). Summary: Formerly Future::getTry was non-blocking, and exhibited confusing behaviour of throwing on timeouts, but returning a try containing exceptions related to the workload of the future. This was inconsistent with Future::get, and thus surprising. An earlier change safely removed this broken version of the operation. Here we add it back in with consistent behaviour. Reviewed By: yfeldblum Differential Revision: D23477042 fbshipit-source-id: afda6b37c86531dab43ac31ec6d605cc6c5d670c
-
Yedidya Feldblum authored
Summary: [Folly] A few nits for `constexpr_strlen`, `constexpr_strcmp`. Reviewed By: ericniebler Differential Revision: D23547224 fbshipit-source-id: f232861f5cc4dbd5eb77c4bbe3b9766fd233e9f5
-
Robin Cheng authored
Summary: In the "Complex" test we can have nodes running at the same time. So appending to the same vector concurrency isn't safe. Protecting that with a mutex. Reviewed By: yfeldblum Differential Revision: D23545746 fbshipit-source-id: b6f6e8b7204cf63c7e8fbbd8fc5134cb66c8180a
-
Ivan Egorov authored
Summary: Variable length arrays are an extension to C++ standard that is not universally supported. Use a fixed size array instead. Differential Revision: D23563131 fbshipit-source-id: 743e65838e83286ea28d8de10cd9d4416e6e4e91
-
- 07 Sep, 2020 1 commit
-
-
Dan Melnic authored
Summary: Add the ability to specify the min number of threads without changing a gflag Reviewed By: stuclar Differential Revision: D23557854 fbshipit-source-id: d4394e979c123e7f312816b1dec2849d46b0de9a
-
- 06 Sep, 2020 2 commits
-
-
Ivan Egorov authored
Summary: This explains why the commonly used `int(*s1 - *s2)` was changed to a slightly less obvious alternative. Reviewed By: yfeldblum Differential Revision: D23537394 fbshipit-source-id: 152554bc9864cdf25c569216d21b0c04bea67e9d
-
Orvid King authored
Summary: This is used so needs to be included. MSVC 2019's STL exposes this. Reviewed By: yfeldblum Differential Revision: D23497796 fbshipit-source-id: 612e0fb91c5d5637c25d062a4b3afc0c67344012
-