Peizhao Ou [Fri, 9 Feb 2018 08:54:12 +0000 (00:54 -0800)]
Refactors folly test cases to use gtest
Peizhao Ou [Wed, 7 Feb 2018 23:19:04 +0000 (15:19 -0800)]
Refactors RCU test cases
Peizhao Ou [Wed, 7 Feb 2018 22:58:34 +0000 (14:58 -0800)]
Adds sync benchmarks
Peizhao Ou [Wed, 7 Feb 2018 18:56:24 +0000 (10:56 -0800)]
Adds Folly MPMCQueue test case
Peizhao Ou [Wed, 7 Feb 2018 07:11:55 +0000 (23:11 -0800)]
Adds AtomicLinkedList test case
Peizhao Ou [Wed, 7 Feb 2018 01:00:30 +0000 (17:00 -0800)]
Adds unbounded queue test case
Peizhao Ou [Wed, 7 Feb 2018 00:13:29 +0000 (16:13 -0800)]
Adjusts pass counts for maps
Peizhao Ou [Tue, 6 Feb 2018 22:07:58 +0000 (14:07 -0800)]
Adds test drivers for concurrent hash maps
Pádraig Brady [Tue, 23 Jan 2018 18:47:49 +0000 (10:47 -0800)]
folly: fix make_optional compliation issue with gnu++17
Summary:
This clashes with std::make_optional with -std=gnu++17 giving:
call of overloaded 'make_optional(std::__cxx11::basic_string<char>)' is ambiguous
Reviewed By: yfeldblum
Differential Revision:
D6780579
fbshipit-source-id:
fea8c76869e4d9b744fc3182379328a91879b1d2
Nick Terrell [Tue, 23 Jan 2018 09:05:28 +0000 (01:05 -0800)]
Revert
D6745720: [folly][compression] Log (de)compression bytes
Summary:
This reverts commit
1249d203df610cb29c16e03f7a06ea90aea80418
bypass-lint
An infra SEV is better than not reverting this diff.
If you copy this password, see you in SEV Review!
cause_a_sev_many_files
Differential Revision:
D6745720
fbshipit-source-id:
b357d0d8c42388d6f322cbb8f6d8958f7f02df54
Nick Terrell [Tue, 23 Jan 2018 04:58:54 +0000 (20:58 -0800)]
Log (de)compression bytes
Summary:
Log bytes before/after (de)compression to the logging backend. Use the codec name in the key, and for lz4/zstd also include the library version and compression level.
I chose the keys such that each individual piece as <= 15 characters, to be inlined. However, I chose readability of the keys over trying to squeeze the entire key in 15 characters.
Reviewed By: yfeldblum
Differential Revision:
D6745720
fbshipit-source-id:
1249d203df610cb29c16e03f7a06ea90aea80418
Nick Terrell [Tue, 23 Jan 2018 04:58:50 +0000 (20:58 -0800)]
Add counters interface
Summary: Adds an open source counters interface.
Reviewed By: yfeldblum
Differential Revision:
D6609118
fbshipit-source-id:
cc326443339b88acdd11e4184eb0c82d786732c2
Pádraig Brady [Tue, 23 Jan 2018 02:26:46 +0000 (18:26 -0800)]
support folly::chrono::coarse_steady_clock with c++17
Summary:
Move the coarse_steady_clock definition outside
the c++ < 17 specific defines, as otherwise it's not
defined when using -std=gnu++17.
Reviewed By: yfeldblum
Differential Revision:
D6780601
fbshipit-source-id:
35cc5aa10db7d890e17bf03cc5e80803a9356d7a
Maged Michael [Sat, 20 Jan 2018 05:46:22 +0000 (21:46 -0800)]
Fix integer sign consistency.
Summary: Keeping all variables that interact with hazptr_domain::rcount_ signed int to avoid conversion errors.
Reviewed By: yfeldblum
Differential Revision:
D6754593
fbshipit-source-id:
e283f127a112a529a0e98eb82b6061b44aa9d2ca
Yedidya Feldblum [Sat, 20 Jan 2018 00:21:57 +0000 (16:21 -0800)]
Remove unsafe tag and add presorted tag
Summary:
[Folly] Remove `unsafe` tag and add `presorted` tag.
There are varieties of unsafety, so let us be more explicit about which variety of unsafety is invoked in each case.
Differential Revision:
D6758520
fbshipit-source-id:
d198a3c7601971460f91acc7787c9da02ae283c0
Adam Simpkins [Fri, 19 Jan 2018 22:57:43 +0000 (14:57 -0800)]
remove unused include in Demangle.cpp
Summary: folly/memory/Malloc.h was included but not needed.
Reviewed By: yfeldblum
Differential Revision:
D6757598
fbshipit-source-id:
241b939724b21a94739e14335ddfaadfcd00dda3
Nathan Bronson [Fri, 19 Jan 2018 20:41:05 +0000 (12:41 -0800)]
remove closure from assert
Summary:
Somebody reported compilation issues with the closure in post()'s
assert, resulting in "error: lambda-expression in unevaluated context".
While I haven't been able to reproduce the problem locally, it is easy
enough to work around in this case.
Reviewed By: djwatson, mcallahan
Differential Revision:
D6759739
fbshipit-source-id:
9f8082a1e20cd9ddf626cb176542e4e861a7e702
Yedidya Feldblum [Fri, 19 Jan 2018 19:47:48 +0000 (11:47 -0800)]
Use MemoryIdler in SaturatingSemaphore
Summary:
[Folly] Use `MemoryIdler` in `SaturatingSemaphore`.
As is used in `Baton`.
And merge the two invocations of `futexWait` and `futexWaitUntil` - `futexWaitUntil` also tests for the max-deadline internally.
Reviewed By: djwatson
Differential Revision:
D6720045
fbshipit-source-id:
a48187a6c866dbf99bb5c7283e0288b939bef2e5
Yedidya Feldblum [Fri, 19 Jan 2018 19:47:46 +0000 (11:47 -0800)]
Handle max deadlines in Futex
Summary:
[Folly] Handle max deadlines in `Futex`.
Some of the synchronization code internally treats deadlines which are equivalent to `time_point::max()` for the same clock as a sentinel value indicating a deadline at infinity, or equivalently the lack of a deadline.
Care must be taken when converting between clocks to translate a deadline at infinity for one clock to the deadline at infinity for the other clock.
Reviewed By: nbronson
Differential Revision:
D6720021
fbshipit-source-id:
cfc230dd2d8db55297385a4afcb6d87ae4221840
Lee Howes [Fri, 19 Jan 2018 17:18:41 +0000 (09:18 -0800)]
Add TimedDrivableExecutor to folly.
Summary: Adds a TimedDrivableExecutor implementation of DrivableExecutor that adds a driveUntil method. driveUntil is as drive, except that it takes a timepoint and will stop driving after that time to allow callers to time out more easily.
Reviewed By: yfeldblum
Differential Revision:
D6658320
fbshipit-source-id:
a75145748e78497ce107ae152f25729547883835
Yedidya Feldblum [Fri, 19 Jan 2018 08:43:00 +0000 (00:43 -0800)]
Fix copyright line in folly/synchronization/test/ParkingLotBenchmark.cpp
Summary: [Folly] Fix copyright line in `folly/synchronization/test/ParkingLotBenchmark.cpp`.
Reviewed By: andrewjcg
Differential Revision:
D6758502
fbshipit-source-id:
cae2a79940c7c9cc58c29977141199ab1e902081
Adam Simpkins [Fri, 19 Jan 2018 04:43:24 +0000 (20:43 -0800)]
cmake: remove the check preventing cmake on non-Windows platforms
Summary:
I believe the CMake build scripts have a similar level of functionality to the
autoconf-based build scripts even on Linux these days. This lets users use
CMake on Linux and Mac, rather than directing them to autoconf instead.
Reviewed By: meyering
Differential Revision:
D6745366
fbshipit-source-id:
0361eecead55ee06269192eee8d2e7286eb182b8
Adam Simpkins [Fri, 19 Jan 2018 04:43:21 +0000 (20:43 -0800)]
cmake: mark the compression tests as slow
Summary:
The compression test code has a large number of parameterized tests that run
with a large number of parameter combinations. These tests take many minutes
to run.
Reviewed By: meyering
Differential Revision:
D6745364
fbshipit-source-id:
dac5d5eb4a786da7be453742fac5f92a9740e468
Adam Simpkins [Fri, 19 Jan 2018 04:43:19 +0000 (20:43 -0800)]
cmake: enable running the tests
Summary:
CMake 3.9+ includes built-in support for gtest. This updates the CMake build
scripts to make use of this if the GoogleTest module is available.
Reviewed By: meyering
Differential Revision:
D6745369
fbshipit-source-id:
1ef978874b9a0ef2cc5f48ab1c7a0b55d0f1155e
Adam Simpkins [Fri, 19 Jan 2018 04:43:18 +0000 (20:43 -0800)]
cmake: build as many source files as possible
Summary:
The CMakeLists.txt file finds the sources and headers for the main folly
library by finding all *.cpp and *.h files, and then excluding specific ones.
The CMakeLists.txt file was originally written for Windows builds, and it was
hard-coded to exclude a number of files that do not build on Windows. This
updates the file to properly check for the dependencies, and build these files
if their required third-party dependencies are available.
Reviewed By: meyering
Differential Revision:
D6745368
fbshipit-source-id:
3ee04d54147a68c482aab50d30bc9fe2a4134eef
Adam Simpkins [Fri, 19 Jan 2018 04:43:15 +0000 (20:43 -0800)]
cmake: add more checks for folly-config.h generation
Summary:
Update the CMake build files to perform additional checks to set configuration
macros in folly-config.h
I believe this should largely bring the CMake build on-par with (or even better
than) the autoconf build scripts. I believe that the CMake build scripts now
perform all of the checks necessary to set macros in folly-config.h correctly.
The autoconf-based configure script also appears to have a number of bugs:
in several places it accidentally uses different macro names than the ones
checked in the source code. Some of it's checks are also broken, and fail to
detect features correctly due to compilation errors in the check.
Reviewed By: yfeldblum
Differential Revision:
D6735699
fbshipit-source-id:
5ce48f1deddd63c9d52fcccd5d5ccf6ca35e9a0d
Adam Simpkins [Fri, 19 Jan 2018 04:42:48 +0000 (20:42 -0800)]
demangle: remove an old TODO comment
Summary:
Both the autoconf and cmake build scripts check for
`cplus_demangle_v3_callback()` and define
`FOLLY_HAVE_CPLUS_DEMANGLE_V3_CALLBACK` appropriately.
Reviewed By: meyering
Differential Revision:
D6745365
fbshipit-source-id:
3020593c60a21568781b835490b8d64913366cb9
Wez Furlong [Fri, 19 Jan 2018 02:39:50 +0000 (18:39 -0800)]
reuse more of Cursor to avoid future issues
Summary:
Following on from
D6755842; we don't have to repeat as
much of the internals of `readFixedString`, so... don't!
Reviewed By: yfeldblum
Differential Revision:
D6756062
fbshipit-source-id:
db3e4fd62e48bf155a656ee57df84274021027f7
Wez Furlong [Fri, 19 Jan 2018 02:39:48 +0000 (18:39 -0800)]
fixup decode logic for fragmented IOBufs
Summary:
D6635325 exposed a long standing issue with the way
that we were consuming Cursor::length, so let's fix it up!
More details are in the new unit test for this!
Reviewed By: spalamarchuk
Differential Revision:
D6755842
fbshipit-source-id:
f8b20406c32682892791e7375be577d54d52e0ad
Yedidya Feldblum [Thu, 18 Jan 2018 22:49:00 +0000 (14:49 -0800)]
Improve SingletonThreadLocal performance
Summary:
[Folly] Improve `SingletonThreadLocal` performance.
By explicitly controlling inlining behavior.
The ctor is definitionally cold - once per process - so outline.
`get` is hot so inline. Uncached `get` is cold - once per thread - so outline uncached.
Reviewed By: djwatson
Differential Revision:
D6736662
fbshipit-source-id:
4cd77c7772b46e2e3c6b2a3dc071b2b06522979e
Adam Simpkins [Wed, 17 Jan 2018 19:11:01 +0000 (11:11 -0800)]
cmake: fix the test builds
Summary:
- Fix the locations of some tests that have been moved.
- Remove some tests that have been deleted.
- Comment out some tests that depend on parts of folly that are not currently
built by the CMake build scripts.
- Fix a build error in CompressionTest.cpp if FOLLY_HAVE_LIBZ is not defined.
Reviewed By: yfeldblum
Differential Revision:
D6735700
fbshipit-source-id:
89f60751fa7079b2c609d23d85fbed2a0f317b55
Adam Simpkins [Wed, 17 Jan 2018 18:05:24 +0000 (10:05 -0800)]
fix a multiline comment warning
Summary:
DeterministicScheduleTest.cpp contained several single-line C++ comments that
ended in a trailing backslash. This makes the preprocessor treat the following
line as a comment as well, even if it does not start with `//`. Newer versions
of gcc emit warnings about this.
This changes the comment in DeterministicScheduleTest.cpp to use `/* */` to
avoid this issue.
Reviewed By: siyengar
Differential Revision:
D6735672
fbshipit-source-id:
162c735507a643ce0dbee58f1f054865237e1eba
Adam Simpkins [Wed, 17 Jan 2018 18:05:22 +0000 (10:05 -0800)]
fix some bugs in AsyncSSLSocketTest
Summary:
A couple of the test functions in AsyncSSLSocketTest maintained two EventBase
objects and alternated looping between them. In some cases it would call
EventBase::loopOnce() even when there was no work to do. This call normally
blocks until an event is ready. This happened to work when using libevent1,
but this appears mostly accidental: with libevent1 EVLOOP_ONCE causes the loop
to break out even after an "internal" I/O event; in libevent2 EVLOOP_ONCE only
breaks out after a non-internal event has occurred:
https://github.com/libevent/libevent/commit/
0617a818204397790e5e4c9bcb9e91ae5ea7817a
In these tests it turns out that the internal EventBase NotificationQueue
always gets triggered the very first time loopOnce() is called, preventing
these tests from hanging when using libevent1.
This fixes the hang when using libevent2 by removing the initial loopOnce()
calls that potentially have nothing to do. This also consolidates the 2
EventBase objects into one to avoid having to alternate loopOnce() calls
between them without knowing which one actually has work to do.
This also fixes an issue where the code never checked the return value of
`recv()`
Reviewed By: yfeldblum, siyengar
Differential Revision:
D6735669
fbshipit-source-id:
5f36106a08866aa8908e82263f83a606399cdf79
Adam Simpkins [Wed, 17 Jan 2018 18:05:21 +0000 (10:05 -0800)]
suppress warnings in tests for deprecated functions
Summary:
Update ShellTest and PromiseTest to suppress warnings about using deprecated
functions in the tests for those functions.
Reviewed By: yfeldblum
Differential Revision:
D6735670
fbshipit-source-id:
89edcb49d1eff3132398aaef88f5a5cae82e3557
Stepan Palamarchuk [Wed, 17 Jan 2018 17:39:12 +0000 (09:39 -0800)]
Add DCHECKs for checking that underlying IOBuf wasn't modified
Summary: Appending/prepending to IOBuf while iterating over it with Cursor is unsafe. This diff adds DCHECKs to catch such cases.
Reviewed By: yfeldblum
Differential Revision:
D6735060
fbshipit-source-id:
7799facc52c53fabd83756ecb26a18c4ebd69677
Dave Watson [Wed, 17 Jan 2018 16:17:44 +0000 (08:17 -0800)]
Loop Time
Summary:
Only do the exponential loop smoothing once every 10ms.
If we need it before then, do it linearly.
Also, remove one of the now()s by only calling it once.
Reviewed By: bmaurer, yfeldblum
Differential Revision:
D6690047
fbshipit-source-id:
8267c01064aabc17cb8e86eb888e6120c99a129f
Stepan Palamarchuk [Wed, 17 Jan 2018 11:12:41 +0000 (03:12 -0800)]
Properly handle appending to the tail of the chain
Summary: Currently appending to the tail of the chain would cause the cursor advancing to the beginning of the chain, which is not correct, instead we should advance to the tail.
Reviewed By: yfeldblum
Differential Revision:
D6734999
fbshipit-source-id:
b8b2585e0475b656f7b6bf4ed39686e2ccb2e432
Petr Lapukhov [Wed, 17 Jan 2018 03:01:23 +0000 (19:01 -0800)]
add tryCreateNetwork()
Summary: Add non-throwing version of createNetwork(), and rework existing code to throw exceptions based on error codes returned by non-throwing version.
Reviewed By: yfeldblum
Differential Revision:
D6705425
fbshipit-source-id:
268ff64c36e7cceeea3463248d18b7b2cb81390e
Yedidya Feldblum [Wed, 17 Jan 2018 02:19:38 +0000 (18:19 -0800)]
Fix Build: folly/synchronization/test/ParkingLotBenchmark.cpp (sign-compare, unused-variable)
Summary: [Folly] Fix Build: `folly/synchronization/test/ParkingLotBenchmark.cpp` (`sign-compare`, `unused-variable`).
Reviewed By: djwatson
Differential Revision:
D6733586
fbshipit-source-id:
04b82110e8e0b655e6b3994dbca3bd0b4bd57eef
Adam Simpkins [Wed, 17 Jan 2018 01:59:08 +0000 (17:59 -0800)]
cmake: fix path to FindGLog.cmake
Summary:
The cmake files refer to this package as "FindGLog", but the file name on disk
incorrectly had the 'L' lower cased. This worked on case-insensitive file
systems, but caused cmake to fail when used on a case-sensitive file system.
This diff fixes the file name to match the name used in the cmake files. This
is also more consistent with the existing "FindGFlags" and "FindGMock"
packages.
Reviewed By: yfeldblum
Differential Revision:
D6710439
fbshipit-source-id:
19f6824ef6793e505b5a0080c0fefe0b145a41c3
Yedidya Feldblum [Wed, 17 Jan 2018 01:49:07 +0000 (17:49 -0800)]
Revert
D6725091: [Folly] Use thread-local in RequestContext::getStaticContext
Summary:
This reverts commit
9979f39677284b1051cb109b461097495d77ca17
bypass-lint
An infra SEV is better than not reverting this diff.
If you copy this password, see you in SEV Review!
cause_a_sev_many_files
Differential Revision:
D6725091
fbshipit-source-id:
f1e3c80c869aa47684f5fbe79528e68174dee568
Dave Watson [Tue, 16 Jan 2018 18:44:37 +0000 (10:44 -0800)]
parkinglot benchmark
Summary: Add benchmark vs. futex
Reviewed By: yfeldblum
Differential Revision:
D6639280
fbshipit-source-id:
9735444a7f48011f31603159561675d472cc4411
Jim Meyering [Tue, 16 Jan 2018 17:32:45 +0000 (09:32 -0800)]
define SKIP_IF
Summary:
Finding ourselves writing too many identical "if (expr) SKIP << ..." statements,
this change factors out/encapsulates the functionality.
Reviewed By: yfeldblum
Differential Revision:
D6727531
fbshipit-source-id:
703abcd5d8c30a6ebab94327a12da4f2d1f7ff74
Yedidya Feldblum [Tue, 16 Jan 2018 17:32:21 +0000 (09:32 -0800)]
Use thread-local in RequestContext::getStaticContext
Summary:
[Folly] Use thread-local in `RequestContext::getStaticContext`.
`folly::SingletonThreadLocal` uses `folly::ThreadLocal`. However, `static FOLLY_TLS` (`static __thread`) is always faster than `folly::ThreadLocal` for thread-local singletons for which iteration is not required.
Reviewed By: djwatson
Differential Revision:
D6725091
fbshipit-source-id:
9979f39677284b1051cb109b461097495d77ca17
Yedidya Feldblum [Tue, 16 Jan 2018 00:49:14 +0000 (16:49 -0800)]
Fix missing WaitOptions symbol in autotools build
Summary:
[Folly] Fix missing `WaitOptions` symbol in autotools build.
Closes #736.
Reviewed By: spalamarchuk
Differential Revision:
D6724950
fbshipit-source-id:
54ac0d1a743aa38fe1a7a2bdce585fced18c5a44
Stepan Palamarchuk [Tue, 16 Jan 2018 00:36:45 +0000 (16:36 -0800)]
Track absolute position of the cursor
Summary:
Start tracking the position of the cursor from the head of IOBuf chain. This comes at almost no cost (one arithmetic operation on IOBuf advance).
The main use case for this cursor is Thrift deserialization code. It allows us to stop accumulating `xfer` on every single byte/field/element write and instead get it from Cursor in the end (when we're exiting Thrift code).
This allows achieving ~10% better performance of deserialization.
Reviewed By: yfeldblum
Differential Revision:
D6646813
fbshipit-source-id:
8f796854a24a411698e96afe037695e816813022
Stepan Palamarchuk [Tue, 16 Jan 2018 00:36:41 +0000 (16:36 -0800)]
Improve fast path of Cursor
Summary:
This change simplifies the fastpath by reducing it to bare minimum (i.e. check length, load data) and removes indirection to IOBuf.
Additionally it adds `skipNoAdvance` method to have 1-instruction skip.
Disassembly of `read<signed char>` is over 35 instructions (just hot path). With this change it's doesn to 8.
Disassembly after:
Dump of assembler code for function folly::io::detail::CursorBase<folly::io::Cursor, folly::IOBuf const>::read<unsigned char>():
0x000000000041f0f0 <+0>: mov 0x18(%rdi),%rax
0x000000000041f0f4 <+4>: lea 0x1(%rax),%rcx
0x000000000041f0f8 <+8>: cmp 0x10(%rdi),%rcx
0x000000000041f0fc <+12>: ja 0x41f105 <folly::io::detail::CursorBase<folly::io::Cursor, folly::IOBuf const>::read<unsigned char>()+21>
0x000000000041f0fe <+14>: mov (%rax),%al
0x000000000041f100 <+16>: mov %rcx,0x18(%rdi)
0x000000000041f104 <+20>: retq
0x000000000041f105 <+21>: jmpq 0x41f110 <folly::io::detail::CursorBase<folly::io::Cursor, folly::IOBuf const>::readSlow<unsigned char>()>
With this diff Thrift deserialization becomes ~20% faster (with prod workloads).
Thrift benchmark:
Before:
============================================================================
thrift/lib/cpp2/test/ProtocolBench.cpp relative time/iter iters/s
============================================================================
BinaryProtocol_read_Empty 12.98ns 77.03M
BinaryProtocol_read_SmallInt 20.94ns 47.76M
BinaryProtocol_read_BigInt 20.86ns 47.93M
BinaryProtocol_read_SmallString 34.64ns 28.86M
BinaryProtocol_read_BigString 185.53ns 5.39M
BinaryProtocol_read_BigBinary 67.34ns 14.85M
BinaryProtocol_read_LargeBinary 62.23ns 16.07M
BinaryProtocol_read_Mixed 58.74ns 17.03M
BinaryProtocol_read_SmallListInt 89.99ns 11.11M
BinaryProtocol_read_BigListInt 39.92us 25.05K
BinaryProtocol_read_BigListMixed 616.20us 1.62K
BinaryProtocol_read_LargeListMixed 83.49ms 11.98
CompactProtocol_read_Empty 11.28ns 88.67M
CompactProtocol_read_SmallInt 19.15ns 52.22M
CompactProtocol_read_BigInt 26.14ns 38.25M
CompactProtocol_read_SmallString 31.04ns 32.22M
CompactProtocol_read_BigString 184.55ns 5.42M
CompactProtocol_read_BigBinary 69.73ns 14.34M
CompactProtocol_read_LargeBinary 64.39ns 15.53M
CompactProtocol_read_Mixed 58.73ns 17.03M
CompactProtocol_read_SmallListInt 76.50ns 13.07M
CompactProtocol_read_BigListInt 25.93us 38.56K
CompactProtocol_read_BigListMixed 623.15us 1.60K
CompactProtocol_read_LargeListMixed 80.57ms 12.41
============================================================================
After:
============================================================================
thrift/lib/cpp2/test/ProtocolBench.cpp relative time/iter iters/s
============================================================================
BinaryProtocol_read_Empty 10.40ns 96.17M
BinaryProtocol_read_SmallInt 15.14ns 66.03M
BinaryProtocol_read_BigInt 15.19ns 65.84M
BinaryProtocol_read_SmallString 25.19ns 39.70M
BinaryProtocol_read_BigString 172.85ns 5.79M
BinaryProtocol_read_BigBinary 56.88ns 17.58M
BinaryProtocol_read_LargeBinary 56.77ns 17.61M
BinaryProtocol_read_Mixed 43.98ns 22.74M
BinaryProtocol_read_SmallListInt 58.19ns 17.19M
BinaryProtocol_read_BigListInt 19.75us 50.63K
BinaryProtocol_read_BigListMixed 440.20us 2.27K
BinaryProtocol_read_LargeListMixed 56.94ms 17.56
CompactProtocol_read_Empty 9.35ns 106.93M
CompactProtocol_read_SmallInt 13.07ns 76.49M
CompactProtocol_read_BigInt 18.23ns 54.87M
CompactProtocol_read_SmallString 25.61ns 39.05M
CompactProtocol_read_BigString 174.46ns 5.73M
CompactProtocol_read_BigBinary 59.77ns 16.73M
CompactProtocol_read_LargeBinary 60.81ns 16.44M
CompactProtocol_read_Mixed 42.70ns 23.42M
CompactProtocol_read_SmallListInt 66.89ns 14.95M
CompactProtocol_read_BigListInt 25.08us 39.87K
CompactProtocol_read_BigListMixed 427.93us 2.34K
CompactProtocol_read_LargeListMixed 56.11ms 17.82
============================================================================
Reviewed By: yfeldblum
Differential Revision:
D6635325
fbshipit-source-id:
393fc1005689042977c03f37f5a898ebe7814d44
Alvaro Leiva Geisse [Mon, 15 Jan 2018 22:07:55 +0000 (14:07 -0800)]
allow command to accept "--" separator
Summary:
Currently NestedCommandLineApp does not support `--` to indicate that the following arguments should be parsed as arguments, not nested commands or options.
This diff fix that by whitelisting any argument given after "--"
Reviewed By: yfeldblum
Differential Revision:
D6721144
fbshipit-source-id:
38a850b6ea803dc758c5fe65a21575e5faeac35b
Yedidya Feldblum [Sun, 14 Jan 2018 19:28:07 +0000 (11:28 -0800)]
Fix copyright lines
Summary: [Folly] Fix copyright lines based on file histories.
Reviewed By: spalamarchuk
Differential Revision:
D6720312
fbshipit-source-id:
c70a667a1977e70e2d4451ea624f96163982f681
Yedidya Feldblum [Sun, 14 Jan 2018 18:14:13 +0000 (10:14 -0800)]
Convert newlines in folly/portability/PThread.cpp
Summary:
[Folly] Convert newlines in `folly/portability/PThread.cpp`.
```
dos2unix folly/portability/PThread.cpp
```
Reviewed By: meyering
Differential Revision:
D6720343
fbshipit-source-id:
b92122b4a7012d7f8d73d293af51b4fcc868c582
David Goldblatt [Sat, 13 Jan 2018 07:57:16 +0000 (23:57 -0800)]
Add Tearable, for concurrently-modified non-atomic objects.
Summary:
This adds the Tearable class template, which holds storage for an
arbitrarily-sized object that can be concurrently read or written without any
external synchronization.
Reviewed By: yfeldblum, djwatson
Differential Revision:
D6422334
fbshipit-source-id:
ee3853bbd393ac8e30dca6439c61606cc5495f92
Yedidya Feldblum [Sat, 13 Jan 2018 01:59:41 +0000 (17:59 -0800)]
Promote aligned_malloc and aligned_free
Summary:
[Folly] Promote `aligned_malloc` and `aligned_free` from `namespace folly::detail` to `namespace folly`.
And move them from `folly/portability/Memory.h` to `folly/Memory.h`.
Differential Revision:
D6153394
fbshipit-source-id:
eef314d2bc171910ea3c8403da9e9e1d1858ce15
Adam Simpkins [Sat, 13 Jan 2018 00:03:02 +0000 (16:03 -0800)]
cmake: remove DOS-style line endings
Summary:
A number of the files in CMake/ had inconsistent line-endings. This updates
files using DOS-style CRLF line endings to just use CR instead. On Windows,
git is capable of automatically changing CR to CRLF when checking out the
repository working directory.
Reviewed By: meyering
Differential Revision:
D6714717
fbshipit-source-id:
82adccf4e522d38fd1cb420869f62e52dbd6c5f1
Adam Simpkins [Sat, 13 Jan 2018 00:03:00 +0000 (16:03 -0800)]
cmake: add checks to generate folly-config.h correctly
Summary:
Add proper checks to detect and set the values in folly-config.h correctly.
Previously the code simply hard-coded values that were appropriate for Windows.
This does not yet define all of the settings produced by the autoconf build,
but it lets the CMake-based build largely succeed on Linux systems.
Reviewed By: meyering
Differential Revision:
D6710437
fbshipit-source-id:
80490080ee6322995b740ac2a15181d220c6874a
Adam Simpkins [Sat, 13 Jan 2018 00:02:58 +0000 (16:02 -0800)]
cmake: set compiler flags for non-Windows platforms
Summary:
Update CMakeLists.txt to check the current platform, and to set compiler flags
correctly. It now uses flags for Microsoft Visual Studio on Windows, and flags
for gcc or clang on all other platforms. Previously it unconditionally used
MSVC flags.
Reviewed By: meyering
Differential Revision:
D6710435
fbshipit-source-id:
dbae3097bcadf1ee4a25879dd7770603387c0e4d
Adam Simpkins [Sat, 13 Jan 2018 00:02:57 +0000 (16:02 -0800)]
cmake: support using a separate build directory
Summary:
Fix rules in the CMakeLists.txt file that generate source files to first create
their output directory if necessary. This allows the build to succeed when
building with a separate build output directory, rather than placing build
artifacts in the source tree itself.
Reviewed By: meyering
Differential Revision:
D6710436
fbshipit-source-id:
786a65a37a70833e7e4a5affe4df292626dbb591
Eric Niebler [Fri, 12 Jan 2018 21:55:50 +0000 (13:55 -0800)]
correctly handle APIs that accept Poly<T&> as an argument
Summary: Multi-dispatch in Poly was handled by treating arguments of type Poly<I&> as special, unwrapping them. That's a problem if the underlying API actually wants the Poly<I&> unmolested.
Reviewed By: yfeldblum
Differential Revision:
D6713975
fbshipit-source-id:
18a90fa701fab14c3d3d46c247efe09ea5903b11
Sergey Makarenko [Fri, 12 Jan 2018 21:42:05 +0000 (13:42 -0800)]
Register singleton's destruction using std::atexit
Summary:
scheduleDestroyInstances function is called from createInstance function when
new instance of specific singleton type is created thus marking a point in
static objects order when all singltons will be destructed.
This does not work well for situations when singleton is loaded as part of
python extension which is a shared object. In this case static objects of this
shared object would be constructed first and singleton from this extension will
be created after that. Since destruction order is reversed and all singletons
will be destructed together, static objects of python extension will be
destroyed before singleton from this extension. Which leads to heap-after-free
ASAN exceptions.
In other words, lifetime of all folly singletons is aligned to the lifetime of the
first created folly singleton.
Using std::atexit to register singleton's destruction from singleton
constructor will align lifetime of singletons to the most recent singleton
which matters for python extensions and does not matter for other use cases.
Reviewed By: andriigrynenko
Differential Revision:
D6705644
fbshipit-source-id:
5c933886ceae649e3c75f8e7e7936d5a7ed04539
Enji Cooper [Fri, 12 Jan 2018 18:49:13 +0000 (10:49 -0800)]
Spell uintptr_t properly in static_assert in `getStackTrace()`
Summary:
While here, pet the linter with respect to the warning around the indentation with the comment containing the licensing tort.
Signed-off-by: Enji Cooper <yaneurabeya@gmail.com>
Reviewed By: yfeldblum
Differential Revision:
D6710314
fbshipit-source-id:
fc0b971e6300af9c63a690c54c08fc70e0313b70
Yedidya Feldblum [Fri, 12 Jan 2018 05:56:07 +0000 (21:56 -0800)]
Unsafe pre-sorted construction for sorted-vector containers
Summary:
[Folly] Unsafe pre-sorted construction for sorted-vector containers.
If the backing container type can be constructed directly in sorted order or can be determined in advance to be in sorted order, then a special constructor can help code take advantage of this condition by avoiding an extra invocation of `std::sort`.
Reviewed By: spalamarchuk
Differential Revision:
D6708379
fbshipit-source-id:
25d886b0814dc9230c6046ed1e7f199fac47754e
Adam Simpkins [Fri, 12 Jan 2018 02:24:07 +0000 (18:24 -0800)]
cmake: fix error message on non-Windows platform
Summary:
Building folly with cmake is only supported on Windows for now. This fixes
cmake on non-Windows platforms to fail with a helpful message telling people to
use autoconf. This message was in place before, but was after an MSVC version
check preventing it from appearing.
Reviewed By: meyering
Differential Revision:
D6707328
fbshipit-source-id:
a28a07ab0da41d605b11d93bba40f33520c5f57e
Yedidya Feldblum [Thu, 11 Jan 2018 21:26:45 +0000 (13:26 -0800)]
MemoryIdler::futexWaitUntil
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 [Thu, 11 Jan 2018 16:00:19 +0000 (08:00 -0800)]
Relax stop_ memory order
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 [Thu, 11 Jan 2018 01:52:16 +0000 (17:52 -0800)]
Cut the ScopeGuard alias now that we have auto
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 [Thu, 11 Jan 2018 01:52:13 +0000 (17:52 -0800)]
Move ScopeGuardImpl and ScopeGuardImplBase into the detail namespace
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 [Thu, 11 Jan 2018 01:52:11 +0000 (17:52 -0800)]
Stop using ScopeGuardImpl in DynamicParser
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
Yedidya Feldblum [Wed, 10 Jan 2018 21:44:14 +0000 (13:44 -0800)]
folly::Init, RAII variant of folly::init
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 [Wed, 10 Jan 2018 20:43:40 +0000 (12:43 -0800)]
UnboundedQueue: Use hazptr_obj_batch
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 [Wed, 10 Jan 2018 20:29:05 +0000 (12:29 -0800)]
logging: fix build error when using gcc with -Wmissing-braces
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 [Wed, 10 Jan 2018 20:05:34 +0000 (12:05 -0800)]
Let Futex import base-class ctors
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 [Wed, 10 Jan 2018 16:40:46 +0000 (08:40 -0800)]
Add hazptr_obj_batch
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 [Wed, 10 Jan 2018 06:39:16 +0000 (22:39 -0800)]
Tweak FutexResult comments
Summary: [Folly] Tweak `FutexResult` comments.
Reviewed By: nbronson
Differential Revision:
D6673979
fbshipit-source-id:
1777311cd93d5a83432c4ebb48a8432a1c504ca9
Yedidya Feldblum [Wed, 10 Jan 2018 06:39:13 +0000 (22:39 -0800)]
Futex::futexWait returns FutexResult
Summary: [Folly] `Futex::futexWait` returns `FutexResult`.
Reviewed By: nbronson
Differential Revision:
D6673871
fbshipit-source-id:
378c69d8362970e985da31e31d8e9b0179d2917f
Yedidya Feldblum [Wed, 10 Jan 2018 06:39:11 +0000 (22:39 -0800)]
Support for all clock types in Futex
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 [Wed, 10 Jan 2018 06:39:10 +0000 (22:39 -0800)]
Use ptr-to-const in Futex
Summary: [Folly] Use ptr-to-`const` in `Futex`.
Reviewed By: igorsugak
Differential Revision:
D6673723
fbshipit-source-id:
b828c2284b40ec8166e823eca7725beccd330f87
Yedidya Feldblum [Wed, 10 Jan 2018 06:39:08 +0000 (22:39 -0800)]
Fix some copyright lines in folly/detail/ and folly/test/
Summary: [Folly] Fix some copyright lines in `folly/detail/` and `folly/test/`.
Differential Revision:
D6673878
fbshipit-source-id:
6c060a974bb4d40d0f24a44ebddddf892805c65e
Yedidya Feldblum [Wed, 10 Jan 2018 04:11:18 +0000 (20:11 -0800)]
Baton support for wait-options
Summary: [Folly] Baton support for wait-options
Reviewed By: nbronson
Differential Revision:
D6591168
fbshipit-source-id:
beca8422ac0daa572fb43c371923a86f199999f9
Yedidya Feldblum [Wed, 10 Jan 2018 04:11:16 +0000 (20:11 -0800)]
Timed wait operations for spin-only Baton
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 [Wed, 10 Jan 2018 04:08:38 +0000 (20:08 -0800)]
logging: include file name suffixes in XLOG() category names
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 [Wed, 10 Jan 2018 04:08:37 +0000 (20:08 -0800)]
logging: add numbered INFO* log level values
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 [Wed, 10 Jan 2018 04:08:35 +0000 (20:08 -0800)]
logging: rename the `DEBUG` log level to `DBG`
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 [Wed, 10 Jan 2018 02:44:44 +0000 (18:44 -0800)]
Change the enumerate() example to bind the proxy by reference
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 [Wed, 10 Jan 2018 02:44:43 +0000 (18:44 -0800)]
Improve performance of enumerate() with optimization disabled
Reviewed By: yfeldblum, WillerZ
Differential Revision:
D6682606
fbshipit-source-id:
5a203a849e96d3020cf9ad2669451122954c2199
Adriana Libório [Wed, 10 Jan 2018 00:13:22 +0000 (16:13 -0800)]
Fixing typo in sorted_vector_types.h
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
Dan Melnic [Tue, 9 Jan 2018 19:36:55 +0000 (11:36 -0800)]
Return if we handle any error messages to avoid unnecessarily calling recv/send
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 [Tue, 9 Jan 2018 15:32:57 +0000 (07:32 -0800)]
use in futex
Summary: Use new ParkingLot API in futex.
Reviewed By: yfeldblum
Differential Revision:
D6595853
fbshipit-source-id:
7024ac1d3e0c5958a651a3e33c1427038bbe7808
Dave Watson [Tue, 9 Jan 2018 15:30:49 +0000 (07:30 -0800)]
Add a check if max atomic_shared_ptrs is reached.
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 [Tue, 9 Jan 2018 00:29:24 +0000 (16:29 -0800)]
UnboundedBlockingQueue: Adjust segment size
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
Eric Niebler [Mon, 8 Jan 2018 23:21:57 +0000 (15:21 -0800)]
give all folly exception types default visibility
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 [Mon, 8 Jan 2018 19:31:12 +0000 (11:31 -0800)]
Update cpuid test to expect failure on non intel cpu
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 [Mon, 8 Jan 2018 19:12:18 +0000 (11:12 -0800)]
test that _sp includes nul bytes
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 [Mon, 8 Jan 2018 16:49:37 +0000 (08:49 -0800)]
Use local error buffer in readStoreFromBuffer
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 [Mon, 8 Jan 2018 05:40:55 +0000 (21:40 -0800)]
Remove gcc-v4.7 support from MemoryIdler
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
Yedidya Feldblum [Sun, 7 Jan 2018 22:19:17 +0000 (14:19 -0800)]
Terminal comma for FutexResult enumerators
Summary: [Folly] Terminal comma for `FutexResult` enumerators. Style nit.
Reviewed By: meyering
Differential Revision:
D6673523
fbshipit-source-id:
abf9f4d3e99bf9a6d3042a49252b1b1190e69b9f
Yedidya Feldblum [Sat, 6 Jan 2018 06:45:21 +0000 (22:45 -0800)]
Use auto for scope-guard locals v.s. folly::ScopeGuard
Summary: Use `auto` for scope-guard locals v.s. `folly::ScopeGuard`.
Reviewed By: igorsugak, meyering
Differential Revision:
D6664915
fbshipit-source-id:
ea239b712f3f9dc7ef81105aaf82f4b36bc07db5
Eric Niebler [Sat, 6 Jan 2018 01:31:41 +0000 (17:31 -0800)]
give EventBase a non-explicit default constructor
Summary: Default constructors are strange and often unexpected. Refactor.
Reviewed By: yfeldblum
Differential Revision:
D6667480
fbshipit-source-id:
24c456c46c846c61e28f1a88806d7c36d9192493
Maged Michael [Sat, 6 Jan 2018 00:10:46 +0000 (16:10 -0800)]
Add threshold for thread local retired objects
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
Yedidya Feldblum [Fri, 5 Jan 2018 22:23:31 +0000 (14:23 -0800)]
Synchronized::exchange
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 [Fri, 5 Jan 2018 21:29:57 +0000 (13:29 -0800)]
Fix copyright lines in folly/synchronization/Baton.h
Summary: [Folly] Fix copyright lines in `folly/synchronization/Baton.h`.
Reviewed By: meyering
Differential Revision:
D6665595
fbshipit-source-id:
84aa0c475f01c858d543a047103437c083b3a4ed
Mingtao Yang [Fri, 5 Jan 2018 20:54:46 +0000 (12:54 -0800)]
Clarify folly::ssl::init documentation
Summary: Adds wording indicating that it is safe to call this function multiple times.
Reviewed By: yfeldblum
Differential Revision:
D6625530
fbshipit-source-id:
2305f7b8e3451a6663003d23230b22c6f65a3729