1. 23 Jan, 2018 4 commits
    • Nick Terrell's avatar
      Revert D6745720: [folly][compression] Log (de)compression bytes · 59cb2ab0
      Nick Terrell authored
      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
      59cb2ab0
    • Nick Terrell's avatar
      Log (de)compression bytes · 0c20289b
      Nick Terrell authored
      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
      0c20289b
    • Nick Terrell's avatar
      Add counters interface · b35b5a98
      Nick Terrell authored
      Summary: Adds an open source counters interface.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D6609118
      
      fbshipit-source-id: cc326443339b88acdd11e4184eb0c82d786732c2
      b35b5a98
    • Pádraig Brady's avatar
      support folly::chrono::coarse_steady_clock with c++17 · 37129826
      Pádraig Brady authored
      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
      37129826
  2. 20 Jan, 2018 2 commits
    • Maged Michael's avatar
      Fix integer sign consistency. · 73fbda10
      Maged Michael authored
      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
      73fbda10
    • Yedidya Feldblum's avatar
      Remove unsafe tag and add presorted tag · e52b2964
      Yedidya Feldblum authored
      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
      e52b2964
  3. 19 Jan, 2018 14 commits
    • Adam Simpkins's avatar
      remove unused include in Demangle.cpp · f3585b22
      Adam Simpkins authored
      Summary: folly/memory/Malloc.h was included but not needed.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D6757598
      
      fbshipit-source-id: 241b939724b21a94739e14335ddfaadfcd00dda3
      f3585b22
    • Nathan Bronson's avatar
      remove closure from assert · e3d4b1ba
      Nathan Bronson authored
      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
      e3d4b1ba
    • Yedidya Feldblum's avatar
      Use MemoryIdler in SaturatingSemaphore · 729928e7
      Yedidya Feldblum authored
      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
      729928e7
    • Yedidya Feldblum's avatar
      Handle max deadlines in Futex · 9938799b
      Yedidya Feldblum authored
      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
      9938799b
    • Lee Howes's avatar
      Add TimedDrivableExecutor to folly. · 20808864
      Lee Howes authored
      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
      20808864
    • Yedidya Feldblum's avatar
      Fix copyright line in folly/synchronization/test/ParkingLotBenchmark.cpp · f57db697
      Yedidya Feldblum authored
      Summary: [Folly] Fix copyright line in `folly/synchronization/test/ParkingLotBenchmark.cpp`.
      
      Reviewed By: andrewjcg
      
      Differential Revision: D6758502
      
      fbshipit-source-id: cae2a79940c7c9cc58c29977141199ab1e902081
      f57db697
    • Adam Simpkins's avatar
      cmake: remove the check preventing cmake on non-Windows platforms · 0eca7c9f
      Adam Simpkins authored
      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
      0eca7c9f
    • Adam Simpkins's avatar
      cmake: mark the compression tests as slow · 2e5089d5
      Adam Simpkins authored
      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
      2e5089d5
    • Adam Simpkins's avatar
      cmake: enable running the tests · 5a477268
      Adam Simpkins authored
      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
      5a477268
    • Adam Simpkins's avatar
      cmake: build as many source files as possible · b50a3dd8
      Adam Simpkins authored
      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
      b50a3dd8
    • Adam Simpkins's avatar
      cmake: add more checks for folly-config.h generation · 3e00e462
      Adam Simpkins authored
      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
      3e00e462
    • Adam Simpkins's avatar
      demangle: remove an old TODO comment · b0ab09d8
      Adam Simpkins authored
      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
      b0ab09d8
    • Wez Furlong's avatar
      reuse more of Cursor to avoid future issues · a578696f
      Wez Furlong authored
      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
      a578696f
    • Wez Furlong's avatar
      fixup decode logic for fragmented IOBufs · 93f4d05d
      Wez Furlong authored
      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
      93f4d05d
  4. 18 Jan, 2018 1 commit
    • Yedidya Feldblum's avatar
      Improve SingletonThreadLocal performance · 6374f552
      Yedidya Feldblum authored
      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
      6374f552
  5. 17 Jan, 2018 11 commits
    • Adam Simpkins's avatar
      cmake: fix the test builds · e96129da
      Adam Simpkins authored
      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
      e96129da
    • Adam Simpkins's avatar
      fix a multiline comment warning · 6c511999
      Adam Simpkins authored
      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
      6c511999
    • Adam Simpkins's avatar
      fix some bugs in AsyncSSLSocketTest · bdd9360c
      Adam Simpkins authored
      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
      bdd9360c
    • Adam Simpkins's avatar
      suppress warnings in tests for deprecated functions · 7da4ef82
      Adam Simpkins authored
      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
      7da4ef82
    • Stepan Palamarchuk's avatar
      Add DCHECKs for checking that underlying IOBuf wasn't modified · 4bfbe0a1
      Stepan Palamarchuk authored
      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
      4bfbe0a1
    • Dave Watson's avatar
      Loop Time · a4306bcd
      Dave Watson authored
      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
      a4306bcd
    • Stepan Palamarchuk's avatar
      Properly handle appending to the tail of the chain · 86cefd11
      Stepan Palamarchuk authored
      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
      86cefd11
    • Petr Lapukhov's avatar
      add tryCreateNetwork() · 9bf26065
      Petr Lapukhov authored
      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
      9bf26065
    • Yedidya Feldblum's avatar
      Fix Build: folly/synchronization/test/ParkingLotBenchmark.cpp (sign-compare, unused-variable) · 61cdb3dc
      Yedidya Feldblum authored
      Summary: [Folly] Fix Build: `folly/synchronization/test/ParkingLotBenchmark.cpp` (`sign-compare`, `unused-variable`).
      
      Reviewed By: djwatson
      
      Differential Revision: D6733586
      
      fbshipit-source-id: 04b82110e8e0b655e6b3994dbca3bd0b4bd57eef
      61cdb3dc
    • Adam Simpkins's avatar
      cmake: fix path to FindGLog.cmake · 19db503e
      Adam Simpkins authored
      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
      19db503e
    • Yedidya Feldblum's avatar
      Revert D6725091: [Folly] Use thread-local in RequestContext::getStaticContext · cf930032
      Yedidya Feldblum authored
      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
      cf930032
  6. 16 Jan, 2018 6 commits
    • Dave Watson's avatar
      parkinglot benchmark · 8893b8bc
      Dave Watson authored
      Summary: Add benchmark vs. futex
      
      Reviewed By: yfeldblum
      
      Differential Revision: D6639280
      
      fbshipit-source-id: 9735444a7f48011f31603159561675d472cc4411
      8893b8bc
    • Jim Meyering's avatar
      define SKIP_IF · 492fad43
      Jim Meyering authored
      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
      492fad43
    • Yedidya Feldblum's avatar
      Use thread-local in RequestContext::getStaticContext · 67462593
      Yedidya Feldblum authored
      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
      67462593
    • Yedidya Feldblum's avatar
      Fix missing WaitOptions symbol in autotools build · 1aabda15
      Yedidya Feldblum authored
      Summary:
      [Folly] Fix missing `WaitOptions` symbol in autotools build.
      
      Closes #736.
      
      Reviewed By: spalamarchuk
      
      Differential Revision: D6724950
      
      fbshipit-source-id: 54ac0d1a743aa38fe1a7a2bdce585fced18c5a44
      1aabda15
    • Stepan Palamarchuk's avatar
      Track absolute position of the cursor · afde52ff
      Stepan Palamarchuk authored
      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
      afde52ff
    • Stepan Palamarchuk's avatar
      Improve fast path of Cursor · 2c730d6f
      Stepan Palamarchuk authored
      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
      2c730d6f
  7. 15 Jan, 2018 1 commit
    • Alvaro Leiva Geisse's avatar
      allow command to accept "--" separator · d7b6ad49
      Alvaro Leiva Geisse authored
      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
      d7b6ad49
  8. 14 Jan, 2018 1 commit
    • Yedidya Feldblum's avatar
      Fix copyright lines · cd1bdc91
      Yedidya Feldblum authored
      Summary: [Folly] Fix copyright lines based on file histories.
      
      Reviewed By: spalamarchuk
      
      Differential Revision: D6720312
      
      fbshipit-source-id: c70a667a1977e70e2d4451ea624f96163982f681
      cd1bdc91