1. 20 Dec, 2013 4 commits
    • Brian Watling's avatar
      Trivial argument rename in MPMCQueue · 048a4518
      Brian Watling authored
      Summary: Rename the 'capacity' argument so g++ will not complain when -Wshadow is enabled ('capacity' is also a method on MPMCQueue)
      
      Test Plan: compiles, unit tests pass
      
      Reviewed By: ngbronson@fb.com
      
      FB internal diff: D1076220
      048a4518
    • Soren Lassen's avatar
      Make FOR_EACH* work with temporary containers. · d64c6e0d
      Soren Lassen authored
      Test Plan: unittest
      
      Reviewed By: tudorb@fb.com
      
      FB internal diff: D1071715
      d64c6e0d
    • Adam Simpkins's avatar
      fix bugs in the cursor StringOperations test · efc30713
      Adam Simpkins authored
      Summary:
      The IOBuf.StringOperations test contained two buggy tests.  According to
      the comments, they were intended to test a string spanning multiple
      buffers.  They created a chain of two buffers, but used Appender to
      write the string, which only writes in the final buffer in the chain.
      
      Additionally, the test didn't request enough space in the final buffer
      for the string data, and didn't allow Appender to grow the buffer.  (The
      code also didn't check the return value from pushAtMost() to see if it
      actually wrote all of the string data.)  The test only passed because
      IOBuf would normally allocate more capacity than the caller requested.
      
      I fixed the tests to request sufficient capacity for the string data,
      and use push() rather than pushAtMost() to ensure that all data was
      written correctly.  I also added two new tests which actually test with
      strings spanning multiple buffers.
      
      Test Plan:
      Ran this test with some changes to IOBuf that cause it to only allocate
      the requested capacity in some cases, and verified that the
      StringOperations test pass now.
      
      (The changes I was testing with use goodMallocSize() to determine the
      allocation size even for small internal buffers.  When not using
      jemalloc, goodMallocSize() returns the original size, so it only
      allocates the capacity requested by the caller.)
      
      Reviewed By: pgriess@fb.com
      
      FB internal diff: D1072283
      efc30713
    • Peter Griess's avatar
      Revert "Handle lack of <bits/c++config.h> and <bits/functexcept.h>" · f5cac66e
      Peter Griess authored
      Summary:
      - This diff introduces errors when compiling with clang in fbcode.
      Revert until they get fixed.
      
      Test Plan: .
      
      Reviewed By: tconerly@fb.com
      
      FB internal diff: D1074481
      
      Blame Revision: D998595
      f5cac66e
  2. 26 Nov, 2013 15 commits
    • Peter Griess's avatar
      Get Subprocess running for Mac OS X · 54e29e71
      Peter Griess authored
      Summary:
      - D1030008 added Subprocess to libfolly in automake builds. This
      surfaced some ambient compilation errors that slipped through in my
      prior run through porting this.
      - Mac OS X uses a nonstandard location for wait.h
      - Non-Linux platforms don't support prctl; gate that on Linux
      
      Test Plan:
      - fbmake runtests in fbcode
      - make check on Mac OS X
      
      Reviewed By: davejwatson@fb.com
      
      FB internal diff: D1066273
      
      Blame Revision: D1030008
      54e29e71
    • Peter Griess's avatar
      Revert D998590 · c807fe1f
      Peter Griess authored
      Summary:
      - It looks like Xcode 5.0.2 / clang 500.2.79 changed this behavior. The
      prior behavior was seen against Xcode 5.0.1 / clang 500.2.75. Blerg.
      If we really have to support different Xcode flavors we can come up
      with a real solution for this, but for now just take advantage of the
      fact that clang and gcc seem to agree on this.
      
      Test Plan: - make check on Mac OS X
      
      Reviewed By: andrei.alexandrescu@fb.com
      
      FB internal diff: D1066272
      
      Blame Revision: D998590
      c807fe1f
    • Peter Griess's avatar
      Remove generated .cpp files on 'make clean' · 571c2047
      Peter Griess authored
      Summary:
      - Add generated .cpp files to CLEANFILES so that they get swept up
      during 'make clean' and friends
      
      Test Plan: - autoreconf -i && ./configure && make check && make clean
      
      Reviewed By: davejwatson@fb.com
      
      FB internal diff: D1066270
      571c2047
    • Peter Griess's avatar
      Fix broken clause11_21_4_6_6 test in Apple Clang. · 1c3d7f2a
      Peter Griess authored
      Summary:
      - Prior to this fix, the test relied upon begin() being evaluated after
      the fbstring constructor (even thoug the order of evaluation of
      function arguments is un-defined). When this assumption was violated,
      begin() ended up with an iterator that was invalid since it points to
      data internal to fbstring, and the fbstring copy constructor can end
      up triggering re-allocation in the source.
      
      Test Plan:
      - fbconfig -r folly && fbmake runtests
      - ./configure && make check on Ubuntu/FC/Mac
      
      Reviewed By: andrei.alexandrescu@fb.com
      
      FB internal diff: D1014093
      1c3d7f2a
    • Peter Griess's avatar
      Handle platforms that don't support __thread. · ea10c904
      Peter Griess authored
      Summary:
      - Apple platforms either have different __thread behavior than Linux: on
      i386 __thread values are zeroed out before the destructor provided to
      pthread_key_create(3) is called; on ARM, __thread isn't supported at
      all. To handle this, use pthread_getspecific(3) to manage the array of
      IDs on these platforms only.
      
      Test Plan:
      - fbconfig -r folly && fbmake runtests
      - ./configure && make check on Ubuntu/FC/Mac
      
      Reviewed By: simpkins@fb.com
      
      FB internal diff: D1008923
      ea10c904
    • Peter Griess's avatar
      Handle lack of weak symbols on some platforms · a0fe3c18
      Peter Griess authored
      Summary:
      - It turns out that it's not always desirable to perform runtime
      resolution of weak symbols. For example, on iOS, weak symbols are
      resolved at runtime only if *all* symbol resolution is deferred util
      then, which is undesirable for othe reasons. Detect such platforms at
      configure time and use that information to populate detail/Malloc.h
      with the correct declarations: weak symbols or extern symbols with
      a value of nullptr.
      
      Test Plan:
      - fbconfig -r folly && fbmake runtests
      - ./configure && make check on Ubuntu/FC/Mac
      
      Reviewed By: andrei.alexandrescu@fb.com
      
      FB internal diff: D1002959
      a0fe3c18
    • Peter Griess's avatar
      Handle lack of <bits/c++config.h> and <bits/functexcept.h> · 758e4c77
      Peter Griess authored
      Summary:
      - Clang's libc++ doesn't provide these header files. Detect libc++ via
      the _LIBCPP_VERSION symbol (pulling it in by sourcing some header
      files earlier if necessary) and avoid using these files.
      
      Test Plan:
      - fbconfig -r folly && fbmake runtests
      - ./configure && make check on Ubuntu/FC/Mac
      
      Reviewed By: andrewjcg@fb.com
      
      FB internal diff: D998595
      758e4c77
    • Ben Maurer's avatar
      Avoid copy in folly::toJson · 23123a01
      Ben Maurer authored
      Summary: Adding const avoids a copy constuctor.
      
      Test Plan:
      Unit tests, new benchmark:
      toJson        1.83us  546.15K
      toJson        1.54us  649.98K
      
      Reviewed By: tudorb@fb.com
      
      FB internal diff: D1071781
      23123a01
    • Stephen Chen's avatar
      fix broken clang build: add missing template keyword · bc4b701a
      Stephen Chen authored
      Summary: Broken in D1054291
      
      Test Plan: build adpublisher in clang mode which was one of the two projects that failed to build.
      
      Reviewed By: bmaurer@fb.com
      
      FB internal diff: D1067652
      
      @override-unit-failures
      bc4b701a
    • Stephen Chen's avatar
      Port TimeseriesHistogram from common/stats to folly · 586dd85c
      Stephen Chen authored
      Summary:
      Port TimeseriesHistogram from common/stats to folly. Similarly to
      MultiLevelTimeSeries and Histogram classes we've converted before.
      
      Test Plan:
      Ported the old unittest for TimeseriesHistogram from common/stats to
      folly/test. The same unittest is left in tact and is still passing as well. Ran
      all tests in folly/test and common/stats
      
      Reviewed By: simpkins@fb.com
      
      FB internal diff: D1054291
      586dd85c
    • Dave Watson's avatar
      Add generated files to Makefile.am · 2d980c3d
      Dave Watson authored
      Summary: Missed these on the first pass because they're generated
      
      Test Plan: Built open source folly, links
      
      Reviewed By: pgriess@fb.com
      
      FB internal diff: D1062451
      2d980c3d
    • Tudor Bosman's avatar
      Improve CompressionTest · cda4ae2a
      Tudor Bosman authored
      Summary: Test compressing low-entropy (constant) data as well.
      
      Test Plan: ran it
      
      Reviewed By: tuomas.pelkonen@fb.com
      
      FB internal diff: D1061444
      
      @override-unit-failures
      cda4ae2a
    • Tudor Bosman's avatar
      Fix bad implementation of fnv32 · 11b4d6ba
      Tudor Bosman authored
      Summary: See https://www.facebook.com/groups/fbcode/permalink/601496126553897/
      
      Test Plan: contbuild
      
      Reviewed By: ldbrandy@fb.com
      
      FB internal diff: D1055852
      
      @override-unit-failures
      some hphp_dbg tests postponed for 1.5 days, all other hphp tests
      (including some hphp_dbg ones) are passing
      11b4d6ba
    • Tom Jackson's avatar
      Move byLine to FileGen.h, add explanatory note · 48bc9653
      Tom Jackson authored
      Summary: There's a bit of a gotcha here, let's provide at least a note on this.
      
      Test Plan: Unit tests
      
      Reviewed By: tudorb@fb.com
      
      FB internal diff: D1058244
      48bc9653
    • Daniel Marinescu's avatar
      Added SCOPE_FAIL and SCOPE_SUCCESS macros in non-portable C++. · a57c72d7
      Daniel Marinescu authored
      Summary:
      Added SCOPE_FAIL and SCOPE_SUCCESS macros in non-portable C++. The macros are similar to D's scope(failure) and scope(success).
      Currently the supported platforms are GCC and MSVC. For all others, std::uncaught_exception() is used, which will fail if the macros are used in a destructor called during stack unwinding.
      @override-unit-failures
      
      Test Plan:
      1. Added new unit test to ScopeGuardTest.cpp.
      2. Ran fbconfig -r folly && fbmake dbg
      3. Ran _build/dbg/folly/test/scope_guard_test to make sure my unit test was running and passing.
      
      Reviewed By: andrei.alexandrescu@fb.com
      
      FB internal diff: D1033621
      a57c72d7
  3. 13 Nov, 2013 1 commit
    • Yasser Ganjisaffar's avatar
      Add missing files to Makefile headers · 4962ea0c
      Yasser Ganjisaffar authored
      Summary:
      This two header files are missing from the Makefile which make the
      open source version broken.
      
      Test Plan: code using open source version compiles
      
      Reviewed By: meyering@fb.com
      
      FB internal diff: D1050326
      4962ea0c
  4. 06 Nov, 2013 6 commits
    • Tudor Bosman's avatar
      Add Formatter::writeTo(FILE*) · 8e8b5e75
      Tudor Bosman authored
      Summary: Because I needed it.
      
      Test Plan: test added
      
      Reviewed By: delong.j@fb.com
      
      FB internal diff: D1032179
      8e8b5e75
    • denisspb's avatar
      Update Overview.md · 46600f3e
      denisspb authored
      Summary: just added few words about Subprocess.
      
      Reviewed By: delong.j@fb.com
      
      Test Plan: none
      46600f3e
    • Avani Nandini's avatar
      make move-ctor and destructor noexcept for folly::Optional · 7c083b08
      Avani Nandini authored
      Summary:
      as per summary
      @override-unit-failures
      
      Test Plan: run unit tests
      
      Reviewed By: delong.j@fb.com
      
      FB internal diff: D1031726
      7c083b08
    • Alex Landau's avatar
      Fix passing MoveWrapper into lambdas · e14cd5e1
      Alex Landau authored
      Summary:
      GCC can't compile code that passes a MoveWrapper into a lambda
      in some cases. For example if the capture list has
      [someConstObject, myMoveWrapper], gcc 4.7 fails. This specific case
      works with gcc 4.8, but other cases (e.g. [this, myMoveWrapper]) still
      fail.
      
      This diff is a hack that makes code like that compile. It can be
      removed, along with MoveWrapper itself once we move to C++14 with its
      extended lambda syntax.
      
      Test Plan: fbmake
      
      Reviewed By: hans@fb.com
      
      FB internal diff: D1032585
      e14cd5e1
    • Dave Watson's avatar
      updating folly makefiles · c21eba0d
      Dave Watson authored
      Summary:
      Update Makefile.am with recent files.
      
      Leaves out io/Compression because it uses lz4, of which there are no prebuilt packages for ubuntu (didn't check fedora, but I assume it is the same story there)
      
      Test Plan: on ubuntu 12.10, ./configure, make, make install
      
      Reviewed By: tudorb@fb.com
      
      FB internal diff: D1030008
      c21eba0d
    • Dave Watson's avatar
      move MoveWrapper to folly · 722ef0f3
      Dave Watson authored
      Summary: Add MoveWrapper to folly.
      
      @override-unit-failures
      
      Test Plan: arc unit
      
      Reviewed By: hans@fb.com
      
      FB internal diff: D1030005
      722ef0f3
  5. 25 Oct, 2013 1 commit
    • Sara Golemon's avatar
      Add missing define guard for folly-config.h · 8fcf9c21
      Sara Golemon authored
      Summary:
      Other inclusions of folly-config.h watch for this.
      It must have been missed when this file was added.
      
      Test Plan: Fixes Mac OSX build.
      
      Reviewed By: seanc@fb.com
      
      FB internal diff: D1028354
      8fcf9c21
  6. 24 Oct, 2013 13 commits
    • Sara Golemon's avatar
      Add missing include · 78d1c04a
      Sara Golemon authored
      Summary:
      MemoryMapping.cpp uses DEFINE_int64() from gflags,
      but doesn't include it anywhere.
      
      @override-unit-failures
      
      Test Plan: OSS build failure goes away
      
      Reviewed By: seanc@fb.com
      
      FB internal diff: D1026364
      78d1c04a
    • Andrey Goder's avatar
      fix typo in comment · 83f654ef
      Andrey Goder authored
      Summary: Pretty sure it was meant to be this way...
      
      @override-unit-failures
      
      Test Plan: n/a
      
      Reviewed By: tudorb@fb.com
      
      FB internal diff: D1020789
      83f654ef
    • Philip Pronin's avatar
      exponential capacity growth for io::TypedIOBuf · 94fce358
      Philip Pronin authored
      Summary:
      Amortized cost of `TypedIOBuf::push()` is `O(N)` at this moment.
      Unless we're using jemalloc where we can rely on `realloc()`.  In this
      diff we switch to exponential growth otherwise.
      
      Test Plan:
      built unicorn/test with ASan (and thus without jemalloc), ran
      end-to-end tests and verified we no longer spend minutes to build di4
      
      @override-unit-failures
      
      Reviewed By: tudorb@fb.com
      
      FB internal diff: D1015233
      94fce358
    • Philip Pronin's avatar
      avoid using ifunc + ASan · 681e4677
      Philip Pronin authored
      Summary:
      Code that is using ifunc dies with SIGSEGV on startup when used
      with ASan.
      
      Here is gdb output: {P2882504}
      
      Seems like `ifunc` dispatch is happening before ASan is initialized,
      but ASan instrumentation logic being called from there.
      
      Test Plan:
      built affected unicorn binaries with ASan, ran them, verified
      there is no more SIGSEGV
      
      Reviewed By: meyering@fb.com
      
      FB internal diff: D1013420
      681e4677
    • Rajat Goel's avatar
      Issue with find and npos · b3cd8a1b
      Rajat Goel authored
      Summary:
      I dont know whats the expected behavior but for std::string it seems
      to work.
      
      @override-unit-failures
      
      Test Plan:
      unit-tests
      
      [ RUN      ] FBString.findWithNpos
      folly/test/FBStringTest.cpp:1147: Failure
      Value of: fbstr.find(":", fbstring::npos)
      Actual: 9
      Expected: fbstring::npos
      Which is: 18446744073709551615
      
      Reviewed By: andrei.alexandrescu@fb.com
      
      FB internal diff: D1012870
      b3cd8a1b
    • Nicholas Ormrod's avatar
      Change FBString's #define throw · b604632b
      Nicholas Ormrod authored
      Summary:
      Instead of defining throw to nothing, define it to something
      which creates a grepable error message (re @tudorb in D1005889).
      
      @override-unit-failures
      
      Test Plan:
      fbconfig -r folly
      fbmake dbg && fbmake runtests && fbmake opt && fbmake runtests_opt
      
      All tests passing.
      
      Added throw to a few places in FBString; noticed that error messages
      were produced, and that they contained the defined text. Those changes
      not committed.
      
      Reviewed By: tudorb@fb.com
      
      FB internal diff: D1011963
      b604632b
    • Philip Pronin's avatar
      fix a few bugs in FBString · 8c13c0b9
      Philip Pronin authored
      Summary:
      * `push_back()` fails for medium strings of zero capacity if not linked
      with jemalloc (see added test),
      * we incorrectly initiliaze capacity when acquire mallocated string
      (forgot about null terminator).
      
      Test Plan: fbconfig --allocator=malloc folly/test:fbstring_test_using_jemalloc && fbmake runtests_opt
      
      @override-unit-failures
      
      Reviewed By: tudorb@fb.com
      
      FB internal diff: D1012196
      8c13c0b9
    • Jim Meyering's avatar
      folly, tao: don't impose C constraints on folly's Portability.h · 796bfa80
      Jim Meyering authored
      Summary:
      * folly/Portability.h: Move the definitions that Tao uses
      into a new file, and include that new file here.
      * folly/AddressSanitizer.h: New file.
      * tao/server/config.h: Include that small new file, rather
      than all of folly's Portability.h
      
      Test Plan:
      fbconfig -r tao/server &&
      tao/server/tests/run_unit_tests.sh -d --save-log=log
      For folly, watch the arc-run tests.
      
      Reviewed By: pgriess@fb.com
      
      FB internal diff: D1011800
      
      @override-unit-failures
      796bfa80
    • Sathya Gunasekar's avatar
      Include cpp only when needed · 3851f0ea
      Sathya Gunasekar authored
      Summary:
      D1008921 broke compilation for tao which uses folly/Portability.h
      This diff guards the change for only c++ code. Not sure if this breaks the
      definition of portability.
      
      Test Plan: Compile tao, fbconfig -r folly and fbmake runtests
      
      Reviewed By: simpkins@fb.com
      
      FB internal diff: D1010967
      
      @override-unit-failures
      3851f0ea
    • Peter Griess's avatar
      Remove trailing comma in configure.ac. · 040c3387
      Peter Griess authored
      Summary:
      - We were inadvertantly emitting a superfluous comma when generating the
      configure script, causing it warn on execution. This was caused by
      separating two AC_DEFINE() invocations w/ a comma.
      
      Test Plan:
      - fbconfig -r folly && fbmake runtests
      - ./configure && make check on Ubuntu/FC/Mac
      
      Reviewed By: meyering@fb.com
      
      FB internal diff: D1008924
      040c3387
    • Peter Griess's avatar
      Remove check that depends on malloc implementation. · e6c32d1b
      Peter Griess authored
      Summary:
      - The EXPECT_EQ(vec.capacity(), vec2.capacity()) check is implicitly
      testing how the platform's malloc() and malloc_usable_size()
      implementations interact. We know that small_vector will attempt to
      allocate storage for 3 elements via malloc(), but the small_vector
      implementation then uses malloc_usable_size() to determine capacity,
      which can return more than the size requested by malloc(). As a
      result, capacity may grow more than expected depending on how the
      malloc implementation works.
      
      Test Plan:
      - fbconfig -r folly && fbmake runtests
      - ./configure && make check on Ubuntu/FC/Mac
      
      Reviewed By: alandau@fb.com
      
      FB internal diff: D1008922
      e6c32d1b
    • Peter Griess's avatar
      Detect and use std::is_trivially_copyable<T> where possible. · baab3743
      Peter Griess authored
      Summary:
      - Sadly, boost::has_trivial_copy<T> is not a suitable replacement for
      std::is_trivially_copyable<T> on libc++. Fortunately, the latter is
      actually supported (and works), so use it directly.
      
      Test Plan:
      - fbconfig -r folly && fbmake runtests
      - ./configure && make check on Ubuntu/FC/Mac
      
      Reviewed By: delong.j@fb.com
      
      FB internal diff: D1008921
      baab3743
    • Peter Griess's avatar
      Only run FBString.testConstructionFromLiteralZero under GNU libstdc++ · 60f2c87d
      Peter Griess authored
      Summary:
      - This test verifies the behavior of std::string(0), which the GNU
      library expects to throw an std::logic_error. Other libraries may have
      other behaviors; libc++ segfaults.
      
      Test Plan:
      - fbconfig -r folly && fbmake runtests
      - ./configure && make check on Ubuntu/FC/Mac
      
      Reviewed By: simpkins@fb.com
      
      FB internal diff: D1003125
      60f2c87d