- 19 Oct, 2016 12 commits
-
-
Lee Howes authored
Reviewed By: yfeldblum Differential Revision: D4035412 fbshipit-source-id: 4b7a178088d2950f9f042e0c79b54b3982eb43f5
-
Jim Meyering authored
Summary: Fix warnings exposed by the upstream-proposed -Wshadow-compatible-local option. Reviewed By: markisaa Differential Revision: D4041764 fbshipit-source-id: b2aa6543ce4bc36069b010f1107f1ac117073b26
-
Jim Meyering authored
Summary: Fix warnings exposed by the upstream-proposed -Wshadow-compatible-local option. Reviewed By: igorsugak Differential Revision: D4041769 fbshipit-source-id: 257bfe9370279f755b8e965ffc1c37fef454d4c4
-
Jim Meyering authored
Summary: Fix warnings exposed by the upstream-proposed -Wshadow-compatible-local option. Reviewed By: igorsugak Differential Revision: D4041789 fbshipit-source-id: 79eefaccbe2ca27993ab102ac1b6e3caf3bfb7ce
-
Jim Meyering authored
Summary: Fix warnings exposed by the upstream-proposed -Wshadow-compatible-local option. Reviewed By: igorsugak Differential Revision: D4041937 fbshipit-source-id: a9412dae6d1e43931f3b65bffaf462225f667f13
-
Jim Meyering authored
Summary: Fix warnings exposed by the upstream-proposed -Wshadow-compatible-local option. Reviewed By: igorsugak Differential Revision: D4041919 fbshipit-source-id: 52579a4b7477192ec7145f81216200f81b191183
-
Jim Meyering authored
Summary: Fix warnings exposed by the upstream-proposed -Wshadow-compatible-local option. Reviewed By: igorsugak Differential Revision: D4041910 fbshipit-source-id: d00ea6b294559f80244a226fadf1a3a54c50c78a
-
Jim Meyering authored
Summary: Fix warnings exposed by the upstream-proposed -Wshadow-compatible-local option. Reviewed By: andrewjcg Differential Revision: D4041950 fbshipit-source-id: 7c18564273c5839c647709307f56b2fb5e0f6588
-
Jim Meyering authored
Summary: Fix warnings exposed by the upstream-proposed -Wshadow-compatible-local option. Reviewed By: elsteveogrande Differential Revision: D4041798 fbshipit-source-id: 9fb6901e791176eb42c31f287655aea6be95a30b
-
Jim Meyering authored
Summary: Fix warnings exposed by the upstream-proposed -Wshadow-compatible-local option. Differential Revision: D4041756 fbshipit-source-id: 21faf6ad6bf39b0df42e6ef27481d1c81d37ef99
-
Jim Meyering authored
Summary: Fix warnings exposed by the upstream-proposed -Wshadow-compatible-local option. Reviewed By: nisardan Differential Revision: D4041779 fbshipit-source-id: 375e485a30f01a0610d881fe8b3237cc062aedef
-
Yedidya Feldblum authored
Summary: CodeMod: `dynamic-init-list-ctor`. The `folly::dynamic::dynamic(std::initializer_list<folly::dynamic>)` constructor is deprecated because its meaning is ambiguous and variable across compilers and compiler versions. This diff codemods uses of that constructor to use `folly::dynamic::array<...>(...)` instead. This codemod may not get 100%, but that's okay. Any amount helps. Reviewed By: ot Differential Revision: D4013979 fbshipit-source-id: c6873dbc8027b38e71a0f291466ed2d9bd204a53
-
- 18 Oct, 2016 3 commits
-
-
Andrew Gallagher authored
Summary: - Annotate non-`const` static locals in inline functions which don't require a single copy be used globally at runtime. - Move implmentation from header file to source file (to avoid multiple copies at runtime). - Mark a non-stateful static local as `const` to it easy to ignore when searching for problematic static locals. Reviewed By: yfeldblum Differential Revision: D4010101 fbshipit-source-id: 3be94a5dc5b7029a26e11b2145c0d41968979a5c
-
Phil Willoughby authored
Summary: Some platforms do not output anything when `std::terminate` is called; this fixes the test on those platforms. Reviewed By: yfeldblum, jsedgwick Differential Revision: D4001052 fbshipit-source-id: 671fbca9d6d22e372189b6554440c268c0cff60b
-
Marcelo Juchem authored
Summary: This diff adapts the fibers code to the modified `fcontext` API from Boost 1.61 Reviewed By: Orvid Differential Revision: D4035769 fbshipit-source-id: 54a97294d33c2901af78b8dec95baaefa085c4f5
-
- 15 Oct, 2016 1 commit
-
-
Philip Pronin authored
Summary: We've found clang might be generating incomplete `.debug_aranges`, while falling back to linear `.debug_info` scan is too expensive and shouldn't be used by default, we can afford doing that in fatal signal handler. Also optimize `exception_tracer::printExceptionInfo()` to avoid `LocationInfo` resolution if `NO_FILE_AND_LINE` is used. Reviewed By: luciang, ot Differential Revision: D4020989 fbshipit-source-id: 84172208736b224c19206da48bcb3b5c0b2c67d0
-
- 14 Oct, 2016 3 commits
-
-
Nicholas Ormrod authored
Summary: Removing COW from fbstring had adverse memory consequences when sync'd with libgcc. Revert this diff to keep folly and libgcc in sync. Reviewed By: yfeldblum, luciang Differential Revision: D4019604 fbshipit-source-id: 80bd31c220098bfab37f0effc90f67876432369d
-
Shubhanshu Agrawal authored
Summary: error handling for batch dispatcher, for the case where dispatch function throws. Reviewed By: yfeldblum Differential Revision: D4016246 fbshipit-source-id: ac61b873a425128be7839a119591fca10608210a
-
Matthieu Martin authored
Summary: To be explicit about our assumption from D4013691 Reviewed By: andriigrynenko Differential Revision: D4015816 fbshipit-source-id: 24f984ac9959d0c4c0aeac34b3dce8dfcf2c1354
-
- 13 Oct, 2016 5 commits
-
-
Csaba Kertesz authored
Summary: String.h references std::vector, but it is not included. Closes https://github.com/facebook/folly/pull/496 Reviewed By: yfeldblum, meyering Differential Revision: D4009410 Pulled By: Orvid fbshipit-source-id: f21ce0d5833f0959a83e75e2fbcbe2beedbb5b6f
-
Zonr Chang authored
Summary: Closes https://github.com/facebook/folly/pull/497 Reviewed By: anirudhvr Differential Revision: D4016114 Pulled By: Orvid fbshipit-source-id: ce9da1e20390a2c834e376a7a06f6002103ff1e4
-
Philip Pronin authored
Summary: Each sequence of tuples within an entires set is terminated with (0, 0) according to the DWARF standard (see 7.20 in http://www.dwarfstd.org/doc/DWARF4.pdf). Reviewed By: ot, luciang Differential Revision: D4014952 fbshipit-source-id: c4b034c94adc4a0d9b052456c02919a54a79eaf1
-
Matthieu Martin authored
Summary: This feature already exists in detail, move it to public instead. Reviewed By: andriigrynenko Differential Revision: D4013691 fbshipit-source-id: 1779cc53d114ddc97993b41e0ad63c104008f6b0
-
Andrii Grynenko authored
Reviewed By: yfeldblum Differential Revision: D4013256 fbshipit-source-id: 771f9becfa9e7676439209dfbf4a746c110d629d
-
- 12 Oct, 2016 7 commits
-
-
Zonr Chang authored
Summary: BoringSSL returns `const SSL_CIPHER*` from sk_SSL_CIPHER_value(). Closes https://github.com/facebook/folly/pull/492 Reviewed By: yfeldblum Differential Revision: D4009712 Pulled By: Orvid fbshipit-source-id: cca2e8cb6aab0a459dca55b8f23ef57fa5c8251f
-
Zonr Chang authored
Summary: `SSL_SESSION_up_ref()` in both BoringSSL and OpenSSL 1.1.0 takes a `SSL_SESSION*`. Closes https://github.com/facebook/folly/pull/493 Reviewed By: yfeldblum Differential Revision: D4009706 Pulled By: Orvid fbshipit-source-id: 68ea201821e7a6d5835a79b34187344ba251e239
-
Philip Pronin authored
Summary: Currently only shortcut levels are properly handled, others result in using level 1. Reviewed By: yfeldblum Differential Revision: D4008123 fbshipit-source-id: 37845eeec139007738f99e72ecfb969c6a2e5652
-
Phil Willoughby authored
Summary: When terminating because we were told to rethrow a nonexistent exception, we now print that to `std::cerr` for the benefit of users on platforms which do not dump a stack trace on `std::terminate` Reviewed By: yfeldblum Differential Revision: D4001087 fbshipit-source-id: 5b834cfc75bf42bec06a49ac9db55789a83df180
-
Giuseppe Ottaviano authored
Summary: I thought we wouldn't need this but it turns out Thrift Frozen2 iterators return proxies (it's proxies all the way down). Thanks to ericniebler for trick. Reviewed By: yfeldblum Differential Revision: D4005700 fbshipit-source-id: 1911996afa075c1d819a3aaea2ee924bc2ae2f20
-
Christopher Dykes authored
Summary: There are two changes here. The first is to eliminate `detail::DEFAULT_CLOCK_ID` from `Benchmark.[cpp|h]` as Sierra defines `clockid_t` as an enum type, which means that calling `clock_gettime(detail::DEFAULT_CLOCK_ID` would fail, because the enums are incompatible. As this was being used as a default, but is not actually changable anywhere, I just got rid of `detail::DEFAULT_CLOCK_ID` entirely. The second is to move `portability/BitsFunctexcept.cpp` into `libfollybase_la_SOURCES`, because it's needed for generating the fingerprint tables. Reviewed By: yfeldblum Differential Revision: D4004843 fbshipit-source-id: b2a9c33f8e516d8eb3cdc5ab093f4946ac9ed37e
-
Lucian Grijincu authored
Summary: I added kFatalSignalHandlerCacheSize in {D3984649}, and chose a big number to satisfy most use-cases. But the size increase is non-trivial. Memory usage: - before: 5.1 MB in folly::symbolizer::SignalSafeElfCache::SignalSafeElfCache - after: 80.0 MB in folly::symbolizer::SignalSafeElfCache::SignalSafeElfCache Switch to a dynamic approach and everyone pays for what they use. https://github.com/bminor/glibc/blob/ee19f1de0d0da24114be554fdf94243c0ec6b86c/elf/rtld-debugger-interface.txt#L10-L20 ``` The r_debug structure contains (amongst others) the following fields: struct link_map *r_map: A linked list of loaded objects. enum { RT_CONSISTENT, RT_ADD, RT_DELETE } r_state: The current state of the r_map list. RT_CONSISTENT means that r_map is not currently being modified and may safely be inspected. RT_ADD means that an object is being added to r_map, and that the list is not guaranteed to be consistent. Likewise RT_DELETE means that an object is being removed from the list. ``` https://github.com/bminor/glibc/blob/ee19f1de0d0da24114be554fdf94243c0ec6b86c/elf/rtld.c#L303-L307 ``` /* Call the OS-dependent function to set up life so we can do things like file access. It will call `dl_main' (below) to do all the real work of the dynamic linker, and then unwind our frame and run the user entry point on the same stack we entered on. */ start_addr = _dl_sysdep_start (arg, &dl_main); ``` dl_main: https://github.com/bminor/glibc/blob/ee19f1de0d0da24114be554fdf94243c0ec6b86c/elf/rtld.c#L1192-L1199 ``` /* Initialize the data structures for the search paths for shared objects. */ _dl_init_paths (library_path); /* Initialize _r_debug. */ struct r_debug *r = _dl_debug_initialize (GL(dl_rtld_map).l_addr, LM_ID_BASE); r->r_state = RT_CONSISTENT; ... /* We start adding objects. */ r->r_state = RT_ADD; _dl_debug_state (); LIBC_PROBE (init_start, 2, LM_ID_BASE, r); ... /* Notify the debugger all new objects are now ready to go. We must re-get the address since by now the variable might be in another object. */ r = _dl_debug_initialize (0, LM_ID_BASE); r->r_state = RT_CONSISTENT; _dl_debug_state (); LIBC_PROBE (init_complete, 2, LM_ID_BASE, r); ``` Reviewed By: bixue2010 Differential Revision: D3996974 fbshipit-source-id: e24d72e3cc0339e4cf1acdd2f4c9a7ebfcfdf739
-
- 11 Oct, 2016 3 commits
-
-
Jim Meyering authored
Summary: Compiling with gcc's proposed -Wshadow-compatible-local option exposed some fix-worthy warnings. Rename to avoid the shadowing. Reviewed By: evilmucedin Differential Revision: D3999026 fbshipit-source-id: 26cb3033ba8c5538cc9217993f2fda6aef954a8f
-
Shubhanshu Agrawal authored
Summary: converting add(value&&) to add(value) to make it easier for callsites to use. Reviewed By: A5he Differential Revision: D4000416 fbshipit-source-id: c66f4d93d1223286bbc786d17f65ed02a63cc794
-
Louis Boval authored
Summary: this particular test fails reliably for fbandroid. Modifying the code in fbcode, assuming it will be synced promptly. Reviewed By: edelron Differential Revision: D4000722 fbshipit-source-id: fca5e691ea5c972ddd245acee1c17720730539d4
-
- 10 Oct, 2016 3 commits
-
-
Nicholas Ormrod authored
Summary: The bug report in t13764686 shows that `folly::StringPiece().str()` causes undefined behavior by passing nullptr into memcpy: the default-initialized StringPiece has two null pointers, which will call `string(char*, size)` with nullptr and 0. This gets forwarded to `podCopy` in fbstring, which calls memcpy and has undefined behavior. The call pattern `string(nullptr, 0)` is not illegal (note: that syntax is ambiguous, as the literal `0` can be converted to a pointer). Prevent this legal call pattern from causing undefined behavior in fbstring. This diff puts asserts in podCopy to catch errors, and ensures that current podCopy callsites ensure that the pointer is non-null. Most podCopy callsites do not need to guarded, since the size is guaranteed to be greater than 0 (which will hard crash instead). The interesting callsite is in `initMedium`, because there is a mode (disableSSO) which will allocate empty strings on the heap, so we need to add a guard there. Reviewed By: luciang Differential Revision: D3996440 fbshipit-source-id: b311a311973d1d969542245c72035c5b38da58e3
-
Maged Michael authored
Summary: Interface: - Got rid of std::function reclamation functions and added a Deleter template parameter. - Got rid of the flush() member functions of hazptr_domain - Added a lock-free non-bool member function to get a protected pointer. Implementation: - Implemented the interface changes. - Changed the order of accesses in reading the shared list of objects vs reading the hazard pointers. I think the previous order would have allowed recently protected objects to be reclaimed incorrectly. Updated the examples and tests accordingly. Reviewed By: davidtgoldblatt Differential Revision: D3981284 fbshipit-source-id: 35ff60da3aea1f67c58d82437dda58f6d8b07bf5
-
Phil Willoughby authored
Summary: The definition of `throwException()` is changed to add the `[[noreturn]]` attribute for consistency with `std::rethrow_exception`. If the `exception_wrapper` contains an exception, that is rethrown; if not, then `std::terminate` is called. An alternative design which threw an exception if the `exception_wrapper` did not contain an exception was rejected because of the ambiguity it introduced as to whether the exception thrown was wrapped or not. Benchmarks before: ``` ============================================================================ folly/test/ExceptionWrapperBenchmark.cpp relative time/iter iters/s ============================================================================ exception_ptr_create_and_test 1.45us 689.01K exception_wrapper_create_and_test 4337.80% 33.46ns 29.89M ---------------------------------------------------------------------------- exception_ptr_create_and_test_concurrent 342.99us 2.92K exception_wrapper_create_and_test_concurrent 101.41% 338.21us 2.96K ---------------------------------------------------------------------------- exception_ptr_create_and_throw 3.05us 327.89K exception_wrapper_create_and_throw 140.22% 2.17us 459.77K exception_wrapper_create_and_cast 8956.80% 34.05ns 29.37M ---------------------------------------------------------------------------- exception_ptr_create_and_throw_concurrent 372.68us 2.68K exception_wrapper_create_and_throw_concurrent 102.54% 363.44us 2.75K exception_wrapper_create_and_cast_concurrent 110.93% 335.97us 2.98K ============================================================================ ``` and after: ``` ============================================================================ folly/test/ExceptionWrapperBenchmark.cpp relative time/iter iters/s ============================================================================ exception_ptr_create_and_test 1.46us 684.09K exception_wrapper_create_and_test 4368.84% 33.46ns 29.89M ---------------------------------------------------------------------------- exception_ptr_create_and_test_concurrent 341.20us 2.93K exception_wrapper_create_and_test_concurrent 99.88% 341.60us 2.93K ---------------------------------------------------------------------------- exception_ptr_create_and_throw 3.08us 324.93K exception_wrapper_create_and_throw 106.93% 2.88us 347.46K exception_wrapper_create_and_cast 9532.05% 32.29ns 30.97M ---------------------------------------------------------------------------- exception_ptr_create_and_throw_concurrent 363.73us 2.75K exception_wrapper_create_and_throw_concurrent 101.04% 360.00us 2.78K exception_wrapper_create_and_cast_concurrent 104.50% 348.07us 2.87K ============================================================================ ``` Reviewed By: yfeldblum Differential Revision: D3923939 fbshipit-source-id: 6fc58ac571e59e4122f1fbd194c678e3a3841057
-
- 09 Oct, 2016 1 commit
-
-
Jim Meyering authored
Summary: Prior to this change, any nested use of FOR_EACH would induce a shadowed declaration for each of the two local state variables it declares. This makes the names of those variables __LINE__-dependent, so that there is no shadowing, as long as each nested use is on a different line. This also adds a new test that (prior to this change) would fail to compile with an option like -Werror=shadow-compatible-local. Since this change relies on cpp token concatenation, I have included The fix defines a new helper macro, _FE_ANON, to derive each new variable name. I wondered whether to do this for every other FOR_* macro here, but since so far, I have encountered more than 10 cases of nested FOR_EACH uses in a large corpus, but no nesting of any other FOR_* macro, I am content to do it only for this one. Reviewed By: yfeldblum Differential Revision: D3992956 fbshipit-source-id: f26fba89bc661bb9d22747dec0acdcf8c648fb83
-
- 08 Oct, 2016 2 commits
-
-
Jim Meyering authored
Summary: In HHWheelTimer::scheduleTimeout, remove the declaration of the unused variable, "prev". Reviewed By: yfeldblum Differential Revision: D3987409 fbshipit-source-id: 3a9291bf104e6865d608adfb6118609faa0aea96
-
Yinghai Lu authored
Summary: We are using `bm_max_iters` in folly and other part of the code in fbcode but it didn't really exist in Benchmark.cpp. For example: https://github.com/facebook/folly/blob/master/folly/test/function_benchmark/main.cpp#L29 This patch adds back this functionality. This diff depends on D3990600. Reviewed By: yfeldblum Differential Revision: D3989499 fbshipit-source-id: d2303b2bebb196e84a592d54a72af68171971491
-