- 09 Sep, 2014 26 commits
-
-
Jason Evans authored
Summary: Convert from jemalloc's obsolete *allocm() to *allocx(). Strengthen goodMallocSize() to always return a jemalloc size class, so that xallocx() success/failure detection is simple. @override-unit-failures Test Plan: Folly, unicorn, and HHVM tests. Reviewed By: andrei.alexandrescu@fb.com Subscribers: trunkagent, hphp-diffs@, ps, chaoyc, search-fbcode-diffs@, unicorn-diffs@, ptc, njormrod FB internal diff: D1535841 Tasks: 4996808
-
Marc Horowitz authored
Summary: templates and overloads are hard. This uses SFINAE to get the desired behavior, and includes a test. This also removes a hack in ExceptionWrapper which isn't needed with this fix. Test Plan: string_test, exception_wrapper_test Reviewed By: andrei.alexandrescu@fb.com Subscribers: dreiss, dancol, njormrod FB internal diff: D1535681 Blame Revision: D1517701
-
Pavlo Kushnir authored
Summary: the bug is in InString state when we escape only '"' character. We should escape at least '\\' and '"'. This diffs simply escapes any character after '\\'. Test Plan: folly unit tests, mcrouter unit tests Reviewed By: stepan@fb.com Subscribers: njormrod FB internal diff: D1540836
-
Chip Turner authored
Summary: We considered it circular if we tried to create a singleton while the singleton was being created. In a single threaded world, this is correct, but under concurrency, two threads can be in the singleton creation codepath and become confused about the state of the singleton. This change uses a condition variable to notify when creation completes so that other threads can wait on the creation to complete. Circular creation is detected via thread id. Test Plan: runtests (new test case; failed without the fix, passes with it) Reviewed By: hans@fb.com Subscribers: lins, anca, njormrod, rkroll FB internal diff: D1534081
-
Hannes Roth authored
Summary: Adding some basic functionality to `Later` to make it easier to chain things. Test Plan: Added tests. `fbconfig -r folly/wangle && fbmake runtests_{dbg,dbgo,opt}` `fbconfig --clang -r folly/wangle && fbmake runtests_{dbg,dbgo,opt}` Reviewed By: hans@fb.com Subscribers: fugalh, njormrod FB internal diff: D1527826 Tasks: 4993420
-
Matt Dordal authored
Summary: The GCC shadow variable detector is quite zealous in warning about shadowed members. Here, we have local variables that share the name of member functions. Rename them so that -Wshadow doesn't complain. Test Plan: It didn't build, and now it does. `fbconfig -r folly && fbmake runtests` Reviewed By: njormrod@fb.com Subscribers: fbcode-common-diffs@, njormrod FB internal diff: D1534033
-
Chip Turner authored
Summary: There are times when you want multiple singletons of the same underlying type -- for instance, a fast and slow request handling singleton. This diff allows for that with an optional name that disambiguates multiple singletons of the same type. In addition, we now also allow direct dereferencing of the Singleton<Foo> object to get to the underlying singleton. This is most useful in cases where a singleton is used inside of the same cpp file it is defined. Finally, make get() faster by caching the underlying pointer rather than accessing the shared pointer. If you're using it, you already have a race condition and hopefully your singleton lifecycle is sane and safe from problems this may cause. Test Plan: runtests Reviewed By: hans@fb.com Subscribers: njormrod, lins, anca FB internal diff: D1485887
-
Philip Pronin authored
Test Plan: fbconfig -r folly/wangle && fbmake runtests -j32 Reviewed By: lucian@fb.com Subscribers: sdoroshenko, fugalh, njormrod FB internal diff: D1525044 Tasks: 2680246 Blame Revision: D1358230
-
Marc Horowitz authored
Summary: Change the strategy here: provide a more generic interface which can be used safely with any exception types, but operates more efficiently for explicitly named types. Update the callers to use the new pattern, which mostly means get() and operator* are replaced with other more generic methods. (This diff was constructed by merging D1490304, D1501644, and D1500861.) Test Plan: run tests. Run something which generates an exception message, and make sure that message isn't "std::exception" Reviewed By: marccelani@fb.com Subscribers: ruibalp, mcduff, marccelani, hitesh, mshneer, rtgw-diffs@, alandau, bmatheny, adityab, wormhole-diffs@, bwester, njormrod FB internal diff: D1517701
-
Chip Turner authored
Summary: The previous message from CHECK_THROW was difficult to debug. This improves the messaging to be more actionable. Test Plan: runtests Reviewed By: lins@fb.com Subscribers: lins, anca, fugalh FB internal diff: D1483915
-
Soren Lassen authored
Summary: based on code review feedback in D1516171 Test Plan: ran the test Reviewed By: philipp@fb.com Subscribers: njormrod FB internal diff: D1516187
-
Daniel Sommermann authored
Summary: Defining hash as a struct and a class was causing some junk to get printed during fbmake. Test Plan: `fbconfig -r proxygen; fbmake dbg`, ran unit tests, didn't see output Reviewed By: njormrod@fb.com Subscribers: doug, shilin, njormrod FB internal diff: D1514793
-
Nicholas Ormrod authored
Summary: folly/test/ArenaTest.h assumes that goodMallocSize will account for the block overhead, if the size is +1. However, when compiling without jemalloc (as, I would imagine, most of our open-source clients do), goodMallocSize(64 + 1) returns 65, which is less than 64 + sizeof(Block), and so the tests fail. I have added a constant to Arena.h which exposes the overhead taken by the Block, and changed the tests to use that value instead of 1. (Arena::getTotalSize relies on the totalAllocatedSize_ variable, which is only non-trivially set in allocateSlow, where the size of the heap is added to sizeof(Block)). Test Plan: fbconfig --allocator=malloc folly/test:arena_test && fbmake runtests Reviewed By: jon.coens@fb.com Subscribers: sdwilsh, njormrod FB internal diff: D1512231
-
Sean Cannella authored
Summary: This allows projects that use -Wextra (sans -Wunused-parameter) to compile folly. Test Plan: compiled with gcc and clang Reviewed By: meyering@fb.com Subscribers: njormrod, kmdent, fma, benyluo, shikong, ranjeeth, subodh, pgriess FB internal diff: D1509827
-
Nicholas Ormrod authored
Summary: A few of folly's includes do not start with folly/, and so were missed by D1411225's include-quotation ##""## -> ##<>## transformation change. There were also some folly includes in deeper folly directories and the docs, which I also fixed. The search ##egrep "# *include *\"" -R folly/*## now only includes two lines in FBString.h, which are included for libgcc purposes. The wangle/test/Thens.cpp file, which is auto-generated, was special. I changed the generator .rb script, but when I ran it I overwrote some manual changes to Thens.cpp. For simplicity, I have manually applied the change to Thens.cpp as well. Test Plan: fbconfig -r folly && fbmake runtests Reviewed By: hannesr@fb.com Subscribers: sdwilsh, fugalh FB internal diff: D1511712
-
Jim Meyering authored
Summary: The first (and sometimes 2nd) argument to __attribute__ should begin and end with "__". If it does not, then it is at risk of conflicting with user cpp-defined symbols. Don't do that. This change mechanically corrects most such violations in fbcode. A companion change (see parent task) adds a lint rule to help keep things clean going forwards. Define this function to filter the list of file names to which we will apply the transformations. First, ensure we modify only C and C++ sources. The second process excludes a few directories that appear to contain third-party code: filter() { grep -E '\.(c|h|cc|cpp|hpp)$' | grep -vE \ '^external/|/unbound/|/gearmand_|(3rd|third.)party|/external/libevent' } then, run this command, git grep -l __attribute__ | filter \ | xargs perl -pi -e 's/(__attribute__ *)\(\(( *[^_]\w+)/$1((__${2}__/g' inducing changes like this, for each such keyword: -} __attribute__((packed)); +} __attribute__((__packed__)); That got all but the __format__ archetype arguments like this: __attribute__((__format__(printf. That final "printf" keyword should have the "__" prefix and suffix, too. Run this command to transform those remaining uses: git grep -l '__attribute__.*__format' | filter | xargs perl -pi -e \ 's/(__attribute__ *\(\(__format__ *)\( *(printf|scanf|strftime|strfmon)/$1(__${2}__/g' That command induces changes like this: -static inline int __attribute__ ((__format__ (printf, 3, 4))) +static inline int __attribute__ ((__format__ (__printf__, 3, 4))) This exercise is useful to avoid spurious name-space conflicts, especially when the unprotected keyword is used in a header file. Test Plan: I've ensured tao builds and passes its tests. I will watch the arc-run tests. Reviewed By: njormrod@fb.com Subscribers: rounak, trunkagent, hphp-diffs@, nli, ps, fbcode-common-diffs@, mcdonald, chaoyc, bill, search-fbcode-diffs@, lars, net-systems@, davejwatson, varunk, ruibalp, hero-diffs@, andrewcox, sorg, dfechete, dhruba, sdoroshenko, mcduff, marccelani, hitesh, mshneer, cold-storage-diffs@, omry, jcoens, unicorn-diffs@, ldbrandy, sumeet, abirchall, fugalh, atlas2-eng@, dcapra, mpawlowski, alandau, nkgupta, shilin, bmatheny, everstore-dev@, zhuohuang, wormhole-diffs@, vnalla, msk, maoy, mwa, jgehring, adsatlasreporting@, mconnor, oujin, bwester, micha, tulloch, ptc, logdevice-diffs, alikhtarov, shikong, fuegen FB internal diff: D1508983 Tasks: 4947824 @override-unit-failures
-
Dave Watson authored
Summary: Also save the link-local scope in the V6 address. See D1479365 for more details Test Plan: fbconfig folly/test:network_address_test; fbmake runtests Reviewed By: simpkins@fb.com Subscribers: marccelani, doug, ps, bmatheny FB internal diff: D1486435
-
Marcin Pawlowski authored
Summary: preallocate once and for all, so that we are really malloc efficient in toAppendDelim Test Plan: unit tests Reviewed By: marcelo.juchem@fb.com FB internal diff: D1496310 Tasks: 4886092
-
Nicholas Ormrod authored
Summary: The Optional test relied on std::string clearing its data when it is the source of a move. This does not happen for in-situ fbstrings, so the test breaks in the -fb platform. The solution: wrap the string in a class that explicitly invalidates its data upon a move. Test Plan: fbconfig --platform-all=gcc-4.8.1-glibc-2.17-fb -r folly fbmake runtests fbconfig -r folly fbmake runtests Reviewed By: tudorb@fb.com Subscribers: sdwilsh FB internal diff: D1506840 Tasks: 4943996
-
Tom Jackson authored
Test Plan: Unit test Reviewed By: andrei.alexandrescu@fb.com Subscribers: shilin FB internal diff: D1497250
-
Hannes Roth authored
Summary: It should remove one malloc as per the task. Test Plan: `fbconfig folly/wangle && fbmake runtests` Also, `--clang`. Reviewed By: davejwatson@fb.com Subscribers: fugalh FB internal diff: D1498331 Tasks: 4913277
-
Tudor Bosman authored
Summary: Common pattern: a function returns Optional<X>, indicating whether some X was present or not; you want a default value if the X was not present. Requires that X is copiable. Test Plan: optional_test (test added) Reviewed By: tjackson@fb.com Subscribers: aalexandre, fjargsto, jhj, ntv, lesha, kma FB internal diff: D1502397
-
Jez Ng authored
Summary: The test runner for folly seems to run from folly/test rather than the base fbcode directory. This hack ensures that we find the necessary test files in either case. This fixes the breakage introduced by {D1493963}. Test Plan: fbconfig -r folly && fbmake runtests Reviewed By: davejwatson@fb.com Subscribers: dipanshu FB internal diff: D1502161
-
Andrey Kashin authored
Summary: Currently folly::Synchronized can't be used with non-default constructible types because copy and move constructors require creation of datum_ before it's assignment. To fix this we can initialize them in initializer-list and handle guard creation using helper constructor Test Plan: fbconfig -r folly && fbmake runtests Fixes compilation error: Synchronized started working for non-default constructible types in my project(rfe). Reviewed By: yuri@fb.com Subscribers: dhruvbird FB internal diff: D1502110
-
Darren Mo authored
Summary: Added support for clang in Checksum.cpp preprocessor statements. Test Plan: The right code path is chosen using both gcc and clang now. Reviewed By: brianp@fb.com Subscribers: mathieubaudet, sroy, satadru FB internal diff: D1502289
-
Jez Ng authored
Summary: Comments are a useful extension to JSON, especially for configuration files. Facebook: twagent would previously barf on JSON files that contained '//' in their strings, and this commit allows twagent to strip comments properly. Fixes T4686066. Test Plan: fbconfig common/json mcrouter/lib/config tupperware/agent && fbmake runtests Reviewed By: aravindn@fb.com Subscribers: anarayanan, pavlo, stepan, dipanshu, alikhtarov FB internal diff: D1493963 Tasks: 4686066
-
- 15 Aug, 2014 5 commits
-
-
Sara Golemon authored
-
Sara Golemon authored
Summary: It eventually tries to read from /sys/devices which is not portable. Let's just fall back to sysconf/CacheLocality::uniform. This fixes a runtime crash on OSX, but CYGWIN/BSD were probably also affected. Closes #80 @override-unit-failures Test Plan: author tested, contbuild, flib Reviewed By: joelm@fb.com FB internal diff: D1498567
-
Sara Golemon authored
Summary: This is a known issue on Darwin @override-unit-failures Test Plan: folly/detail/IPAddress.h compiles on a mac Reviewed By: joelm@fb.com FB internal diff: D1499795
-
Sara Golemon authored
-
Daniel Sloof authored
Summary: Fixes the OSX build. Closes #79 Test Plan: author tested, contbuild, flib Reviewed By: joelm@fb.com FB internal diff: D1498545
-
- 14 Aug, 2014 9 commits
-
-
Sara Golemon authored
-
Hannes Roth authored
Summary: Less generic than I hoped for. Naming is terrible. Test Plan: `fbconfig -r tao/client && fbmake runtests` -- I figured if it compiles it works. Also did a `--sanitize=address` build just in case. Reviewed By: hans@fb.com Subscribers: fugalh, zhuohuang, anca FB internal diff: D1470483
-
Philip Pronin authored
Summary: D1494614 migrated us to gtest 1.7 which broke multiple builds (with "error: 'tuple' is already declared in this scope" coming from https://code.google.com/p/googletest/source/detail?spec=svn621&r=621). This diff makes folly compatible with both versions of gtest, and the rest of fbcode is now compatible with gtest 1.7. Test Plan: fbconfig -r folly unicorn/diskindex4 && fbmake opt -j32 Reviewed By: jiayan@fb.com Subscribers: fbcode-common-diffs@, chaoyc, search-fbcode-diffs@, sdoroshenko, cold-storage-diffs@, unicorn-diffs@ FB internal diff: D1497389 Tasks: 4909974, 4910547, 4910567, 4909983
-
Ranjeeth Dasineni authored
Summary: adding @agartrell's implementation of EvictingCacheMap to folly. Its a general purpose cache with LRU eviction. It maintains a doubly linked list threaded throught a hash map using boost::intrusive. set, get and delete are all constant time operations. It is not thread safe. Configurability: It allows callers to specify a hasher for the keys, has callbacks for eviction events and the number of evictions on reaching a capacity limit is configurable. resizing for a higher capacity though could be suboptimal since index is not resized accordingly and you could end up with a bad load factor. Test Plan: unit tests Reviewed By: tulloch@fb.com, njormrod@fb.com Subscribers: tulloch, chrisbray, mhx, doug, agartrell FB internal diff: D1483789
-
Josh Watzman authored
Summary: OS X doesn't support this -- it requires support at the linker level which OS X just doesn't have. Reasonable OS X compilers will yell about it, but even the ones that don't are just silently dropping it on the floor. So I'm not sure what //we// can do other than just silently dropping this on the floor too and hoping that everything works. Test Plan: HHVM build on OS X gets ever so slightly further (runs into other issues). HHVM build in fbcode still seems to build folly okay (didn't wait for it to finish fully). Fixes https://github.com/facebook/folly/issues/78 Reviewed By: tudorb@fb.com FB internal diff: D1487191 Blame Revision: rFBCODE502be7cb0fda306ddc33b9c5ad7a53b0cfbdc893
-
Brian Pane authored
Summary: * Spend some extra time in getNumBuckets() in order to save space: 8 bytes per object on 64-bit platforms. Test Plan: Ran the unit tests Reviewed By: simpkins@fb.com Subscribers: ruibalp FB internal diff: D1488345
-
Lucian Grijincu authored
Test Plan: n.a Reviewed By: philipp@fb.com FB internal diff: D1487919
-
Nathan Bronson authored
Summary: This diff changes LOG_EVERY_MS so that if the specified interval is zero or negative, no clock call is made and LOG(severity) is always called. milli_interval is copied into a temporary to avoid double-evaluation. Test Plan: 1. unit tests 2. new unit test Reviewed By: lesha@fb.com FB internal diff: D1469366 Tasks: 4813858
-
Chip Turner authored
Summary: clang would re-use the same memory location for recreated objects, so instead of checking pointers, we can use a serial number. Test Plan: runtests with fbconfig --clang Reviewed By: lins@fb.com Subscribers: mathieubaudet, lins, anca FB internal diff: D1485907
-