- 28 Oct, 2019 3 commits
-
-
Yedidya Feldblum authored
Summary: [Folly] Use attribute-based suppression in free-invoke traits v.s. pragma-based suppression for suppressing warnings about unused functions. Reviewed By: vitaut Differential Revision: D18112966 fbshipit-source-id: 2519f94d4ff4609c8418d4fd009a24acefe23ab2
-
Yedidya Feldblum authored
Summary: [Folly] Remove `classname` from free-invoke traits inner names - it's already present for disambiguation in the outer private namespace name. Also adjust some of the names better to fit a singular pattern. Reviewed By: vitaut Differential Revision: D18112947 fbshipit-source-id: 0a3e76a72a16fff7d4c127c2994a8c38639083e2
-
Yedidya Feldblum authored
Summary: [Folly] `is_constexpr_default_constructible`, for deciding whether a type is constexpr default-constructible. Reviewed By: vitaut Differential Revision: D18092652 fbshipit-source-id: a4642726a9495135abca1506c5dbb3d57c0e0558
-
- 27 Oct, 2019 1 commit
-
-
Yedidya Feldblum authored
Summary: [Folly] Cut `folly/futures/exercises/`, which was never finished. Reviewed By: fugalh Differential Revision: D18149557 fbshipit-source-id: ec5654c2d37996c42a3673523422bafe2a64c89e
-
- 26 Oct, 2019 6 commits
-
-
Giuseppe Ottaviano authored
Summary: The computation of the upper bits size is incorrect when both `kUpperFirst` and `kChecked` are true. In addition, when `kUpperFirst` is true, we might actually need 8 additional bytes in the buffer, for when `numLowerBits = 0`, so clarify the comment. Reviewed By: philippv Differential Revision: D18145144 fbshipit-source-id: 1372d39023e2d5d1c5ccbfb8e6c7af9a5a930f1d
-
Giuseppe Ottaviano authored
Summary: In most cases lists are not iterated from the beginning, so reading the first word wastes a memory access. Reviewed By: philippv Differential Revision: D18140137 fbshipit-source-id: d5cd07a8b9ed67febcc89cef0314a538e5ca8423
-
Wez Furlong authored
Summary: Our CI environment cannot directly connect to the internet, and even if it could, doing so is undesirable to fetch javascript deps. We maintain an offline mirror of packages used by the build(s) so that we don't have to go out to the internet. When running in fbsource, configure the environment to use that offline mirror. Reviewed By: chadaustin Differential Revision: D18061773 fbshipit-source-id: 1a5e112f23c1baaedfb3dff0c4c2a1641f6bb9a1
-
Wez Furlong authored
Summary: Ask testpilot to include more output in test failures. Reviewed By: fanzeyi Differential Revision: D18061772 fbshipit-source-id: 0c14092557c21396c877d3b1776c5707437a117c
-
Andrii Grynenko authored
Reviewed By: davidtgoldblatt Differential Revision: D16530636 fbshipit-source-id: 0ea2b9b628f3c41f87a3d31e0b4c1dc71101f639
-
Dan Melnic authored
Summary: AsyncServerSocket::bind - call bindSocket with isExistingSocket = false (Note: this ignores all push blocking failures!) Reviewed By: danobi Differential Revision: D18144178 fbshipit-source-id: 0c673bb397fabb737f8595dd0453826bb57c826e
-
- 25 Oct, 2019 2 commits
-
-
Yedidya Feldblum authored
Summary: [Folly] Change an `#ifdef` to a constexpr ternary for `MemoryMapping`. Reviewed By: meyering Differential Revision: D18024494 fbshipit-source-id: 7ee040891ecee9bccf46af1dc43e54946e676c70
-
Wez Furlong authored
Summary: currently, the implementation of `eden prefetch` calls into a mercurial function that is overly eager in making network connections, which results in what should be a fast NOP second prefetch call taking more time than is desirable. This diff adds a little cache to avoid repeatedly calling prefetch for the same directory more than once for the life of the getdeps process. Given the usage pattern of getdeps it is OK that we don't provide a way to invalidate this cache. Reviewed By: fanzeyi Differential Revision: D18005408 fbshipit-source-id: 0ec3f477da1043a5a715704b512c81fcfaa0acde
-
- 24 Oct, 2019 1 commit
-
-
Yedidya Feldblum authored
Summary: [Folly] Optimize `Function::operator()` codegen for size and speed. * Avoid translating between values and references for trivially-copyable values. * Avoid shifting all arguments to make room for the function object address. In the optimal case, the codegen for calling a `Function` with many arguments translates into just a `jmp`. See: * https://github.com/thecppzoo/zoo/commits/master/inc/zoo/AnyCallable.h * https://github.com/bloomberg/bde/blob/3.38.0.1/groups/bsl/bslstl/bslstl_function.h * https://github.com/bloomberg/bde/blob/3.38.0.1/groups/bsl/bslmf/bslmf_forwardingtype.h Given this example code: ```lang=c++,name=check.cpp extern "C" void check_0(folly::Function<void()>& f) { f(); } extern "C" void check_1(int i, folly::Function<void(int)>& f) { f(i); } extern "C" void check_2(int i, int j, folly::Function<void(int, int)>& f) { f(i, j); } extern "C" void check_3(int i, int j, int k, folly::Function<void(int, int, int)>& f) { f(i, j, k); } extern "C" void check_4(int i, int j, int k, int l, folly::Function<void(int, int, int, int)>& f) { f(i, j, k, l); } ``` Before: ```name=check.o 0000000000000000 <check_0>: 0: ff 67 30 jmp QWORD PTR [rdi+0x30] 0000000000000000 <check_1>: 0: 55 push rbp 1: 48 89 f0 mov rax,rsi 4: 48 89 e5 mov rbp,rsp 7: 48 83 ec 10 sub rsp,0x10 b: 89 7d fc mov DWORD PTR [rbp-0x4],edi e: 48 8d 75 fc lea rsi,[rbp-0x4] 12: 48 89 c7 mov rdi,rax 15: ff 50 30 call QWORD PTR [rax+0x30] 18: c9 leave 19: c3 ret 0000000000000000 <check_2>: 0: 55 push rbp 1: 48 89 d0 mov rax,rdx 4: 48 89 e5 mov rbp,rsp 7: 48 83 ec 10 sub rsp,0x10 b: 89 7d f8 mov DWORD PTR [rbp-0x8],edi e: 89 75 fc mov DWORD PTR [rbp-0x4],esi 11: 48 8d 55 fc lea rdx,[rbp-0x4] 15: 48 8d 75 f8 lea rsi,[rbp-0x8] 19: 48 89 c7 mov rdi,rax 1c: ff 50 30 call QWORD PTR [rax+0x30] 1f: c9 leave 20: c3 ret 0000000000000000 <check_3>: 0: 55 push rbp 1: 48 89 c8 mov rax,rcx 4: 48 89 e5 mov rbp,rsp 7: 48 83 ec 10 sub rsp,0x10 b: 89 7d f4 mov DWORD PTR [rbp-0xc],edi e: 89 75 f8 mov DWORD PTR [rbp-0x8],esi 11: 89 55 fc mov DWORD PTR [rbp-0x4],edx 14: 48 8d 4d fc lea rcx,[rbp-0x4] 18: 48 8d 55 f8 lea rdx,[rbp-0x8] 1c: 48 8d 75 f4 lea rsi,[rbp-0xc] 20: 48 89 c7 mov rdi,rax 23: ff 50 30 call QWORD PTR [rax+0x30] 26: c9 leave 27: c3 ret 0000000000000000 <check_4>: 0: 55 push rbp 1: 4c 89 c0 mov rax,r8 4: 48 89 e5 mov rbp,rsp 7: 48 83 ec 10 sub rsp,0x10 b: 89 7d f0 mov DWORD PTR [rbp-0x10],edi e: 89 75 f4 mov DWORD PTR [rbp-0xc],esi 11: 89 55 f8 mov DWORD PTR [rbp-0x8],edx 14: 89 4d fc mov DWORD PTR [rbp-0x4],ecx 17: 4c 8d 45 fc lea r8,[rbp-0x4] 1b: 48 8d 4d f8 lea rcx,[rbp-0x8] 1f: 48 8d 55 f4 lea rdx,[rbp-0xc] 23: 48 8d 75 f0 lea rsi,[rbp-0x10] 27: 48 89 c7 mov rdi,rax 2a: ff 50 30 call QWORD PTR [rax+0x30] 2d: c9 leave 2e: c3 ret ``` After: ```name=check.o 0000000000000000 <check_0>: 0: ff 67 30 jmp QWORD PTR [rdi+0x30] 0000000000000000 <check_1>: 0: ff 66 30 jmp QWORD PTR [rsi+0x30] 0000000000000000 <check_2>: 0: ff 62 30 jmp QWORD PTR [rdx+0x30] 0000000000000000 <check_3>: 0: ff 61 30 jmp QWORD PTR [rcx+0x30] 0000000000000000 <check_4>: 0: 41 ff 60 30 jmp QWORD PTR [r8+0x30] ``` Reviewed By: luciang Differential Revision: D17523239 fbshipit-source-id: beed0bae827aad8290e807374e8596f71f98ce99
-
- 23 Oct, 2019 3 commits
-
-
Lewis Baker authored
Summary: This allows the caller to guarantee that the coroutine starts executing on the current thread. This can be necessary for correctness in some situations, where having the coroutine enqueued to the executor, as `.start()` does, and potentially allowing other code to run in the meantime could invalidate some assumptions. Reviewed By: andriigrynenko Differential Revision: D18076197 fbshipit-source-id: a6c5c226f2d7189f37e8f9713a30896767e9b8e9
-
Kaz Ondo authored
Summary: MemorySanitizer was failing due to uninitialized memory in the stack. ``` ==596112==WARNING: MemorySanitizer: use-of-uninitialized-value [testserver][INFO]: IOBuff received. Len = 128 #0 0x9d4b21 in folly::SocketAddress::updateUnixAddressLength(unsigned int) xplat/folly/SocketAddress.cpp:710:7 #1 0x9d4740 in folly::SocketAddress::setFromSockaddr(sockaddr_un const*, unsigned int) xplat/folly/SocketAddress.cpp:338:3 Uninitialized value was created by an allocation of 'addrStorage' in the stack frame of function '_ZN5folly17AsyncServerSocket12handler ReadyEtNS_13NetworkSocketEt' #0 0x7de840 in folly::AsyncServerSocket::handlerReady(unsigned short, folly::NetworkSocket, unsigned short) xplat/folly/io/async/Asyn cServerSocket.cpp:835 ``` Differential Revision: D18086738 fbshipit-source-id: f36013b157d7b34d3b29c08d4533f01be1a1a8c9
-
Alexey Spiridonov authored
Summary: Until [very recently](https://github.com/google/googletest/pull/2517), `googletest` did not print the skip message in any shape or form, so nothing can possibly depend on us customizing the skip message here. The default is perfectly fine, let's keep it simple. Reviewed By: yfeldblum Differential Revision: D18051635 fbshipit-source-id: f7b889b0adf5e34a70c2579a34748bb159809b3c
-
- 22 Oct, 2019 5 commits
-
-
Dan Melnic authored
Summary: Add `annotate_ignore_thread_sanitizer_guard` class. (Note: this ignores all push blocking failures!) Reviewed By: yfeldblum Differential Revision: D18045913 fbshipit-source-id: 39113e8df3deef3374a3c44246bc55a156bc4d8d
-
Dan Melnic authored
Summary: Allow AsyncServerSocket::bind to be called for multiple addrs (same as for port bind) Reviewed By: yfeldblum Differential Revision: D18046496 fbshipit-source-id: efde498fbaa02357d7c66905b8c1e5e839062076
-
Andrii Grynenko authored
Reviewed By: yfeldblum, lewissbaker Differential Revision: D18052431 fbshipit-source-id: 9fb1b3faba25093cf67bdf9c6cbe5cc70794deee
-
Lewis Baker authored
Summary: Generalises the specialisation of collectAllRange() and collectAllWindowed() on a std::vector<Task<T>> to now work for any std::vector<SemiAwaitable>. This will allow them to work when passed a std::vector<TaskWithExecutor<T>>. Reviewed By: andriigrynenko Differential Revision: D18049190 fbshipit-source-id: 658213f93ff3eadda041ac2262cc6bcb759e331c
-
Yedidya Feldblum authored
Summary: [Folly] Extract `strlcpy` to a new c-string lib in `folly/lang/CString.h`. This new lib would be for routines that should but don't appear in `<cstring>`. Reviewed By: marcinpe Differential Revision: D18032925 fbshipit-source-id: 746851f68e86a5ec2bea5cc659c19c4fe2f0f02a
-
- 21 Oct, 2019 5 commits
-
-
Yedidya Feldblum authored
Summary: [Folly] Guard the forward declaration of `fibers::Baton` by the same condition which determines whether `fibers::Baton` is ever used in futures. Reviewed By: lewissbaker Differential Revision: D17962552 fbshipit-source-id: 2494026999cd170c36adec91108732254212abf1
-
Yedidya Feldblum authored
Summary: [Folly] Prefer a C++ symbol over back-defining `MAP_POPULATE`. Reviewed By: nbronson Differential Revision: D18024313 fbshipit-source-id: 7f3b754a7911d6947e5a6f34860f9f0d3833aa51
-
Yedidya Feldblum authored
Summary: [Folly] Add missing `inline` to `co_current_executor`. Reviewed By: ericniebler Differential Revision: D18034078 fbshipit-source-id: 8c212ef6278112cc8e90075494a3038d9111bb64
-
Nathan Bronson authored
Summary: The PAUSE instruction's latency varies widely across x64 architectures, resulting in too much spinning on Skylake in some scenarios. This diff switches to using cycle counts to limit spinning on x64, so that the minimum and maximum spin durations are independent of asm_volatile_pause's latency. Reviewed By: yfeldblum Differential Revision: D17961663 fbshipit-source-id: 6170bfa48d007ca21b73b1a5c7e68da0043cda2c
-
Wez Furlong authored
Summary: This avoids invalidating the entire build in response to just running `hg amend`, which is frustrating and slow. Reviewed By: chadaustin Differential Revision: D18005409 fbshipit-source-id: ef93313859919298be78204046eb08bcadc5398e
-
- 19 Oct, 2019 1 commit
-
-
Yedidya Feldblum authored
Summary: [Folly] Backport invocability variable templates: `is_invocable_v`, `is_invocable_r_v`, `is_nothrow_invocable_v`, `is_nothrow_invocable_r_v`. And for the member-invoke and free-invoke traits. Reviewed By: ericniebler Differential Revision: D17950331 fbshipit-source-id: 5409d7a72116b0976573e1f64760c5ef9274966f
-
- 18 Oct, 2019 4 commits
-
-
Mingtao Yang authored
Summary: If CH parsing is enabled, also parse out the ServerName extension. OpenSSL 1.1.1 changes the behavior of `SSL_get_servername`: an SNI value is stored in the underlying SESSION if and only if both parties negotiated that SNI. There are some situations where one would wish to retrieve the original ServerName that the client sent. Reviewed By: knekritz Differential Revision: D17893443 fbshipit-source-id: b29ee42e90629c869dd5e68c93c7cb2abc19745f
-
Lewis Baker authored
Summary: No longer allow a child task's modifications to the RequestContext made before it's first suspension point to bleed into the next child task's context. Now always restore the parent task's RequestContext before starting subsequent tasks. Reviewed By: andriigrynenko Differential Revision: D17846070 fbshipit-source-id: 44e206d4c833759fc36c7d1bd0f3545ca6bb9ab1
-
Dan Melnic authored
Summary: Relax DFATAL message Reviewed By: yfeldblum Differential Revision: D18001089 fbshipit-source-id: 2027d0257e1cba6905dc4eb1863b70a8fe6a7366
-
Alexander Zinoviev authored
Summary: trim, ltrim and rtrim are similar to ltrimWhitespace, rtrimWhitespace and trimWhitespace but you can specify what you want to remove Reviewed By: yfeldblum Differential Revision: D17946658 fbshipit-source-id: 9bdc5e6eb810e628a8c16b5142c17a3313f884f2
-
- 17 Oct, 2019 7 commits
-
-
Rodolfo Granata authored
Summary: ThreadPoolExecutor::getPoolStats depends on derived classes implementation. Calling `getPoolStats` is specially useful from `ThreadPoolExecutor::withAll`. This change moves registration of thread pool executor instances to derived classes to avoid `ThreadPoolExecutor::withAll` racing with thread pool destruction while calling `getPoolStats`. Reviewed By: yfeldblum Differential Revision: D17965135 fbshipit-source-id: 637de55ed78b085dc86fffa0e0f4a66cd4cfcede
-
Dan Melnic authored
Summary: keepAliveRelease code reorg Reviewed By: kevin-vigor Differential Revision: D17835172 fbshipit-source-id: 48c60b04324f0d9bd1ac628e2625d3d4d2654c99
-
Dan Melnic authored
Summary: Add missing switch case Reviewed By: yfeldblum Differential Revision: D17945170 fbshipit-source-id: 8128c40e1c86b2a5ff8d1bad3c0e9fe197adc174
-
Wez Furlong authored
Summary: this should help avoid this particular error: ``` IOError: [Errno socket error] [Errno 11001] getaddrinfo failed ``` Reviewed By: chadaustin Differential Revision: D17886598 fbshipit-source-id: bd9f5b84ebd7ca5c339be3afec3a975fa907d052
-
Wez Furlong authored
Summary: This diff allows passing a watchman version number override via the environment as well as via the cmake `WATCHMAN_VERSION_OVERRIDE` option. To help invalidate the build I've added a new section to the manifest files that allows listing out additional env vars that the project hashes should be sensitive to. The effect of this is that we'll re-run the cmake configure step if the listed env vars are changed. Reviewed By: Ben0mega Differential Revision: D17865896 fbshipit-source-id: 8ea5572b0b9b7af95ec5c310e494cb17a139ced4
-
Wez Furlong authored
Summary: testpilot's defaults assume a bigger machine than some of our laptops Reviewed By: fanzeyi Differential Revision: D17878120 fbshipit-source-id: e01f1f9c77a4f5f011051c9c642dbe934c66bc0b
-
Lucas Dobson-Defenbaugh authored
Summary: During shutdown there's a race condition in IOThreadPoolExecutor::getEventBase where a thread is created in ensureActiveThreads, and then destroyed before pickThread() is called. This adds the same guard that exists in add(). Reviewed By: yfeldblum Differential Revision: D17955227 fbshipit-source-id: 042cb5c42056a9da4578571fb10936bbc477c4ff
-
- 16 Oct, 2019 2 commits
-
-
Eric Niebler authored
Summary: Add a portability macro for testing whether the compiler supports C++17's inline variables. Reviewed By: yfeldblum Differential Revision: D17957184 fbshipit-source-id: bff7d2bc15867e32f787860b4f8e5a0176ac1017
-
Yedidya Feldblum authored
Summary: [Folly] Fix wrong definition of `FOLLY_HAVE_GROUP_VARINT` when group varint is unsupported. Reviewed By: Orvid Differential Revision: D17961015 fbshipit-source-id: 3c82aaaf4b257180ab0956e4b181bfd619d7adda
-