1. 10 Jun, 2017 1 commit
    • Christopher Dykes's avatar
      Reorganize the stats directory · d8ed7cbc
      Christopher Dykes authored
      Summary: The source and tests for the stats directory was spread across folly/detail and folly/test, move them into folly/stats directly instead.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5216810
      
      fbshipit-source-id: 00a8bb95a4f7830d0bc46b3f914f256a37833b78
      d8ed7cbc
  2. 09 Jun, 2017 7 commits
    • Victor Gao's avatar
      apply clang-tidy modernize-use-override · b367f0fa
      Victor Gao authored
      Summary: Use clang-tidy to mechanically add missing `override` and remove redundant `virtual`.
      
      Reviewed By: igorsugak
      
      Differential Revision: D5211868
      
      fbshipit-source-id: 6a85f7c4a543a4c9345ec5b0681a8853707343dc
      b367f0fa
    • Victor Gao's avatar
      apply clang-tidy modernize-use-override · 16723809
      Victor Gao authored
      Summary: Use clang-tidy to mechanically add missing `override` and remove redundant `virtual`.
      
      Reviewed By: igorsugak
      
      Differential Revision: D5211868
      
      fbshipit-source-id: 4118c4c72f8ec3485507f69679f7e852b3eaeb73
      16723809
    • Yedidya Feldblum's avatar
      Saner test exception in ExceptionWrapperTest.cpp · 6da8593f
      Yedidya Feldblum authored
      Summary:
      [Folly] Saner test exception in `ExceptionWrapperTest.cpp`.
      
      Make construction do the work and make `what()` free.
      
      Reviewed By: andrewjcg
      
      Differential Revision: D5216707
      
      fbshipit-source-id: bfb4c2473a61ff7da7a3a01adc85facae30d6586
      6da8593f
    • Anirudh Ramachandran's avatar
      Some more OpenSSL 1.1.0 compat APIs · d3e8b83f
      Anirudh Ramachandran authored
      Summary: Add a few more compatibility wrappers for pre-1.1.0 APIs
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5194164
      
      fbshipit-source-id: ae8db08c31370eca729df2927798b6f4d99ee70c
      d3e8b83f
    • Yedidya Feldblum's avatar
      Apply clang-format to folly/gen/ (template decls) · adb8559d
      Yedidya Feldblum authored
      Summary: [Folly] Apply `clang-format` to `folly/gen/` (template decls).
      
      Reviewed By: Orvid
      
      Differential Revision: D5216229
      
      fbshipit-source-id: 1659f1944ccde4de39bccd189bb6490395cf29c2
      adb8559d
    • Christopher Dykes's avatar
      Fix OpenSSLUtils to not include headers the wrong way · 1b0c0d91
      Christopher Dykes authored
      Summary: This is entirely the wrong way to include these headers, and is being included within an anon namespace so just wrong.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5215065
      
      fbshipit-source-id: 499df58c0202f7a1d4482eaa6a0e8b2e1535c763
      1b0c0d91
    • Yedidya Feldblum's avatar
      Apply clang-format to folly/experimental/exception_tracer/ (headers) · f34d96eb
      Yedidya Feldblum authored
      Summary:
      [Folly] Apply `clang-format` to `folly/experimental/exception_tracer/` (headers).
      
      With some manual rearrangement in the places where `clang-format` does awkward things, with the result that `clang-format` over the listed directory becomes a no-op.
      
      Reviewed By: Orvid
      
      Differential Revision: D5215212
      
      fbshipit-source-id: 5570f02c238b1874adbc2ff4150f465c947ad0e6
      f34d96eb
  3. 08 Jun, 2017 5 commits
    • Yedidya Feldblum's avatar
      Apply clang-format to folly/fibers/ · 811c6c33
      Yedidya Feldblum authored
      Summary:
      [Folly] Apply `clang-format` to `folly/fibers/`
      
      With some manual rearrangement in the places where `clang-format` does awkward things, with the result that `clang-format` over `folly/fibers/` becomes a no-op.
      
      Reviewed By: igorsugak
      
      Differential Revision: D5178118
      
      fbshipit-source-id: ae65ff1902666ba9106e18f916bb1d10e6406bf4
      811c6c33
    • Christopher Dykes's avatar
      Switch unguarded #pragmas to use portability macros · 146c24b7
      Christopher Dykes authored
      Summary: Otherwise downstream Windows users have to explicitly disable MSVC's warnings about unknown pragmas.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5211415
      
      fbshipit-source-id: 42871e03895010818c7e1cb6e57c1885970e98c2
      146c24b7
    • Christopher Dykes's avatar
      Refer to nullptr not NULL · 55af3d19
      Christopher Dykes authored
      Summary:
      Folly is a C++ library not a C library, and (almost) universally uses `nullptr` everywhere, so refer to `nullptr` rather than `NULL`.
      This also fixes the 1 place in our actual code where we were using `NULL` rather than `nullptr`.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5204766
      
      fbshipit-source-id: 2a5d5011a28d7d5dd48789f60643a656f51b9732
      55af3d19
    • Eric Niebler's avatar
      Extend the -Warray-bounds workaround in FixedString.h to gcc-5. · 16f34c7d
      Eric Niebler authored
      Summary: FixedString.h has a workaround for a gcc bug regarding erroneous -Werror=array-bounds errors. This commit extends the workaround to the gcc-5 series, which sadly is still broken. Life gets better with gcc-6.
      
      Reviewed By: luciang
      
      Differential Revision: D5210633
      
      fbshipit-source-id: 4fcf080d18ddc573636a3e58b61a97167a8c06ce
      16f34c7d
    • Qi Wang's avatar
      make extent_hooks static. · 7c9e64a0
      Qi Wang authored
      Summary:
      Make extent hooks static and avoid calling arena_destroy, in case there are
      alive allocations not freed yet.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5208102
      
      fbshipit-source-id: 612c772347cd90227fa303fd0b059edbaeb7d4e2
      7c9e64a0
  4. 07 Jun, 2017 12 commits
    • Christopher Dykes's avatar
      Implement __builtin_popcount under MSVC · 4929771e
      Christopher Dykes authored
      Summary:
      I thought I had already implemented this, but apparently I had only implemented the ll variable. Whoops.
      This implements the 32-bit version which fixes the build on Windows.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5203680
      
      fbshipit-source-id: 02b133db59e232cac586944b0ffc0e8bbf5f533a
      4929771e
    • Christopher Dykes's avatar
      Exclude experimental/hazptr/bench from the globs used in the CMake build · 86c0ed4e
      Christopher Dykes authored
      Summary: The directory contains benchmarks and multiple `main`'s so shouldn't be included as part of the main folly library.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5204132
      
      fbshipit-source-id: 7289cb9c2ec292c13df39c9e7b48eca4166ca951
      86c0ed4e
    • Yedidya Feldblum's avatar
      Pass Try by rvalue ref in onError implementation · 4aa6bf94
      Yedidya Feldblum authored
      Summary:
      [Folly] Pass `Try` by rvalue ref in `onError` implementation.
      
      As is done in other overloads and in `thenImplementation`. For consistency.
      
      Reviewed By: spacedentist
      
      Differential Revision: D5199302
      
      fbshipit-source-id: c78db0c36fc7a0b846ca5e44fc237422c9203a24
      4aa6bf94
    • Sonia Mar's avatar
      Uri: switch to std::string over fbstring take 2 · 3d6d4933
      Sonia Mar authored
      Summary: Update tuple generated for hash/equal_to for `folly::Uri` to also use std::string
      
      Reviewed By: Orvid
      
      Differential Revision: D5199266
      
      fbshipit-source-id: bcd619dae01ffbf82fbb5c8987b0e87103572452
      3d6d4933
    • Kyle Nekritz's avatar
      Add OpenSSLCertUtils functions for DER encoding/decoding. · ba690cad
      Kyle Nekritz authored
      Reviewed By: anirudhvr
      
      Differential Revision: D5193205
      
      fbshipit-source-id: 5b427ee4f31008518078f5e54e85c0f0f2201da5
      ba690cad
    • Yedidya Feldblum's avatar
      Shrink the implementations of then and onError · 7dc11fbd
      Yedidya Feldblum authored
      Summary:
      [Folly] Shrink the implementations of `then` and `onError`.
      
      Just a small refactor.
      
      Reviewed By: spacedentist
      
      Differential Revision: D5180784
      
      fbshipit-source-id: a399d18500a2b4c5d8f24dee54891cca802b4461
      7dc11fbd
    • Yedidya Feldblum's avatar
      Try::tryGetExceptionObject · 717713f2
      Yedidya Feldblum authored
      Summary:
      [Folly] `Try::tryGetExceptionObject`.
      
      If the `Try` has a `std::exception` for the non-template overload or a `From` where `is_convertible<From*, Ex*>` for the template overload parameterized by `typename Ex`, returns a pointer to it. Otherwise returns `nullptr`.
      
      Reviewed By: spacedentist
      
      Differential Revision: D5180848
      
      fbshipit-source-id: b7593b7459259f9a1e1e78b36d548e55d086e722
      717713f2
    • Yedidya Feldblum's avatar
      Remove exception_wrapper::throwException · 3c7ee0d0
      Yedidya Feldblum authored
      Summary:
      [Folly] Remove `exception_wrapper::throwException`.
      
      It has been renamed to `throw_exception`.
      
      Reviewed By: Orvid
      
      Differential Revision: D5181005
      
      fbshipit-source-id: 442b3fd9bdaa8170db504a81651cbb085ea50624
      3c7ee0d0
    • Nick Terrell's avatar
      Add zlib/gzip streaming support · 641ad8da
      Nick Terrell authored
      Summary:
      Add streaming interface to the ZlibCodec.
      Implement ZlibStreamCodec::doCompress() and ZlibStreamCodec::doUncompress() using the streaming interface. fbgs CodecType::ZLIB and check that no caller requires thread-safety.
      I found one caller, but it was fixed in D5090855.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5169338
      
      fbshipit-source-id: 40478e162143623ad28fd8bc937d0195521f13fe
      641ad8da
    • Christopher Dykes's avatar
      Switch folly::Uri to use std::string rather than fbstring · 8dd0e3e9
      Christopher Dykes authored
      Summary: Using fbstring directly is not really worthwhile in the vast majority of cases, especially when most places just convert it into an `std::string` immediately.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5187835
      
      fbshipit-source-id: 6f7d71612d3765e8b501d2432cd6281369bfe0fa
      8dd0e3e9
    • Anirudh Ramachandran's avatar
      Add a version of async_test using openssl 1.1.0 · ae1594ea
      Anirudh Ramachandran authored
      Summary:
      Now that it's possible, let's add some 1.1.0 tests to avoid regressing
      1.1.0 support
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5167246
      
      fbshipit-source-id: ba12414504131697d4e0757c9c340a66f810acd4
      ae1594ea
    • Giuseppe Ottaviano's avatar
      Fix destruction order problem in getCoreAllocator · 55791684
      Giuseppe Ottaviano authored
      Summary: We cannot guarantee the correct destruction order of the Meyers singleton owning the allocator, and the objects allocated with it, so we just leak it using `Indestructible`.
      
      Reviewed By: djwatson
      
      Differential Revision: D5196227
      
      fbshipit-source-id: ec07ab1e21af7814194883b252d45aa36d2a04b1
      55791684
  5. 06 Jun, 2017 12 commits
    • Yedidya Feldblum's avatar
      Rename exception_wrapper::get_object to get_exception · 03c1142d
      Yedidya Feldblum authored
      Summary:
      [Folly] Rename `exception_wrapper::get_object` to `get_exception`.
      
      This will be a template overload of the existing non-template member `get_exception`, but it should just work.
      
      Reviewed By: spacedentist
      
      Differential Revision: D5180845
      
      fbshipit-source-id: 28e16e039ec6a7939b38f217b4ad5c6bc803f515
      03c1142d
    • Adam Simpkins's avatar
      additional minor cleanup to the TimeUtil code · 3396d608
      Adam Simpkins authored
      Summary:
      - Fix TimePoint to use steady_clock rather than system_clock
      - Use nanoseconds instead of milliseconds in most locations
      
      This code should probably also be moved into a folly::testing namespace or
      something.  This class is pretty specific to unit tests, and `folly::TimePoint`
      seems like too generic of a name for it.  However, just to keep things simple
      I'm not doing that as part of this diff yet.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5175630
      
      fbshipit-source-id: 26490fc7ff1b25fb86f09309e81108828cd0f091
      3396d608
    • Adam Simpkins's avatar
      update TimeUtil to use getOSThreadID() · c2bd7be5
      Adam Simpkins authored
      Summary:
      Use the newly introduced getOSThreadID() function to get a thread ID for
      determining thread scheduling information on Linux.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5173596
      
      fbshipit-source-id: 3e6fa352c3774986b0ac1f93bd6c7e4a29e08471
      c2bd7be5
    • Adam Simpkins's avatar
      fix timeWaiting computation in TimeUtil · 68f55ed0
      Adam Simpkins authored
      Summary:
      Some of the code in TimeUtil.cpp computes how long the current thread has spent
      waiting to be schedule on the CPU, so we can discount this time when testing
      timeout behavior.
      
      It appears that this code has been broken for a fairly long time.  Older Linux
      kernels reported values in /proc/<pid>/schedstat using jiffies.  However, it
      appears that this was changed in Linux 2.6.23 to report values using
      nanoseconds.  (It looks to me like this was changed in commit 425e0968a25f,
      which purports to simply be moving code from sched.c to sched_stats.h,
      but it appears to also have also changed this behavior.)
      
      This updates TimeUtil.cpp to compute the value correctly in modern Linux
      kernels.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5173598
      
      fbshipit-source-id: 98436d3a687400bf68661156ffce93eea7232632
      68f55ed0
    • Dave Watson's avatar
      Core-local allocator · 5ba3126f
      Dave Watson authored
      Summary:
      Adds a core-local allocator to CacheLocality.  Multiple objects using
      cache locality may share the same allocator, and allocate things less than
      cacheline sized, without incurring additional false-sharing overhead.
      
      Reviewed By: nbronson, ot
      
      Differential Revision: D5139886
      
      fbshipit-source-id: a9804662d6339829a12e0791f418dabd9678f1bf
      5ba3126f
    • Christopher Dykes's avatar
      Fix the build of MallctlHelperTest without JEMalloc · c797a08c
      Christopher Dykes authored
      Summary:
      `kDecayCmd` was guarded such that it wasn't being defined at all if JEMalloc wasn't available.
      
      Closes https://github.com/facebook/folly/issues/608
      
      Reviewed By: interwq
      
      Differential Revision: D5193721
      
      fbshipit-source-id: 1a2666de70e90eac1e9f2e130d0452b01b3239fa
      c797a08c
    • Victor Zverovich's avatar
      Add element construction/destruction hooks to IndexedMemPool · 1e6a1dce
      Victor Zverovich authored
      Summary: This diff adds a Traits template parameter to IndexedMemPool that allows more control over the lifetime management of individual elements, including mixes of lazy and eager recycle semantics (or colocation of different classes of data inside a single element). It also arranges that an index is not reported as isAllocated() until it has been passed to Traits::initialize and passed to Traits::onAllocate at least once, so code that is traversing valid indexes doesn't need to deal with the post-initialize but pre-onAllocate state (it must still deal with indexes that reported isAllocated() as true but have since been passed to onRecycle). The default behavior is unchanged.
      
      Reviewed By: nbronson
      
      Differential Revision: D5177462
      
      fbshipit-source-id: e7d22c860ab6bf25083977dfb5a63955641c9cfb
      1e6a1dce
    • Christopher Dykes's avatar
      Drop a dead include of FBString.h from MemoryMapping.h · 111b7bcc
      Christopher Dykes authored
      Summary: MemoryMapping doesn't use fbstring directly at all, so this include isn't needed.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5188209
      
      fbshipit-source-id: d86b876a96343c830295bea1162580215a340815
      111b7bcc
    • Adam Simpkins's avatar
      add missing include to ThreadId.h · 14d85244
      Adam Simpkins authored
      Summary:
      The syscall() function is defined in <unistd.h>
      <sys/syscall.h> apparently only defines IDs to be used with syscall(), but does
      not define the syscall() function itself.
      
      This caused build failures for files that included ThreadId.h before unistd.h
      
      Reviewed By: Orvid
      
      Differential Revision: D5189658
      
      fbshipit-source-id: 2ec8ea1d58f3fc14cf458a53ecaa811978527398
      14d85244
    • Nathan Bronson's avatar
      UninitializedMemoryHacks · 7cf58370
      Nathan Bronson authored
      Summary:
      This diff adds helper functions that can resize std::string or std::vector
      without constructing or initializing new elements.  They are designed
      for retroactively optimizing code where touching every element twice
      (or touching never-used elements once) shows up in profiling, and where
      restructuring the code to use fixed-length arrays or IOBuf-s would
      be difficult.
      
      Implementations are provided for 5 string implementations (pre-c++11
      libstdc++, libstdc++ with SSO, libc++, std::basic_fbstring, and MSVC)
      and 3 vector implementations (libstdc++, libc++, and MSVC).  On an
      unsupported platform you will hopefully get a #warn if you include
      UninitializedMemoryHacks.h followed by a linker error if you actually
      use it.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5102679
      
      fbshipit-source-id: 536c00eabae4cdb8a0affe3e919a372f4dc51ac5
      7cf58370
    • Qi Wang's avatar
      Update MallctlHelperTest with jemalloc 5 APIs. · cd201c86
      Qi Wang authored
      Summary: Update decay time API to be jemalloc 4 & 5 compatible.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5188574
      
      fbshipit-source-id: 8e3c26c8b6431efdd0ec7ff492a065bddb816b4b
      cd201c86
    • Adam Simpkins's avatar
      add getOSThreadID() · b611811b
      Adam Simpkins authored
      Summary:
      Add a getOSThreadID() call.  This is similar to getCurrentThreadID(), but
      returns the OS-level thread ID.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5173627
      
      fbshipit-source-id: 0e8695ecfc1e382d12526c1b7d1717be114c9f4a
      b611811b
  6. 05 Jun, 2017 3 commits
    • Christopher Dykes's avatar
      Switch Bits.h to just use the popcount builtins directly · f1eb3c50
      Christopher Dykes authored
      Summary:
      These builtins are available on all platforms under GCC, using the instruction directly when available and a fallback implementation otherwise.
      They are implemented in the builtins portability header for MSVC.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5185106
      
      fbshipit-source-id: a58305a6b99eb49bd165876a4a60c512a259b225
      f1eb3c50
    • Christopher Dykes's avatar
      Rename folly/detail/Malloc.h to folly/detail/MallocImpl.h · 43fde9f2
      Christopher Dykes authored
      Summary: This makes the name of the header match the source file.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5186193
      
      fbshipit-source-id: b1f9041fb730eacb91ad167e500c25df8f8ba947
      43fde9f2
    • Yedidya Feldblum's avatar
      Let map-related functions be templated over key types · 54800835
      Yedidya Feldblum authored
      Summary:
      [Folly] Let map-related functions be templated over key types.
      
      This supports the case where map members like `find` may be overloaded or templated on types other than the map's `key_type const&`.
      
      In C++14, standard library map types gain template overloads for `find` and for other members, permitting lookups without constructing `key_type` instances. This is useful primarily when `key_type` is expensive but another object type comparable with `key_type` is inexpensive. As a common example, a `key_type` of `std::string` is expensive in the general case because it allocates storage on the heap but `std::string_view` (C++17), when constructed with non-allocated `char const*, std::size_t`, would be inexpensive.
      
      Reviewed By: terrelln
      
      Differential Revision: D5145879
      
      fbshipit-source-id: 979b75bfe55661aab11d5302da1bcd7830abd5af
      54800835