summary |
shortlog | log |
commit |
commitdiff |
tree
first ⋅ prev ⋅ next
Abhijeet Joglekar [Wed, 1 Aug 2012 17:36:14 +0000 (10:36 -0700)]
Allow capacity and length to be different for user buffers
Summary:
Currently, takeOwnership lets a user pass in a data buffer and wraps it in an
IOBuffer. However, the capacity and length of the user buffer are required to
be same.
Added a new API to allow buffers where the capacity and length can be different.
Users of existing API should not be affected.
Test Plan:
1) Added new test case to IOBufTest that checks buffers with length
different from capacity
2) Run existing IOBuf test cases to verify no regressions
Reviewed By: brianp@fb.com
FB internal diff:
D536575
Wei Wu [Mon, 23 Jul 2012 16:20:41 +0000 (09:20 -0700)]
Make AtomicHashMap support move constructible types
Summary: modified AtomicHashArray and AtomicHashMap to support move constructible types
Test Plan: tested with fbcode/folly/test/AtomicHashArrayTest.cpp and fbcode/folly/test/AtomicHashMapTest.cpp
Reviewed By: philipp@fb.com
FB internal diff:
D527270
Rajat Goel [Thu, 26 Jul 2012 20:24:32 +0000 (13:24 -0700)]
Moving some more benchmarks to fbcode benchmark system
Summary: The format benchmark that was ported some time back has few data points to show - http://fburl.com/
3545876
Test Plan: fbmake --log-to-rfe runbenchmarks_opt
Reviewed By: andrei.alexandrescu@fb.com
FB internal diff:
D524306
Tudor Bosman [Sun, 22 Jul 2012 02:13:21 +0000 (19:13 -0700)]
Add IEC binary unit prefixes
Summary: KiB, MiB, GiB, TiB, etc
Test Plan: by hand in a program using them
Reviewed By: philipp@fb.com
FB internal diff:
D527001
Nathan Bronson [Thu, 19 Jul 2012 20:33:29 +0000 (13:33 -0700)]
add sched_yield in RWTicketSpinLock
Summary:
This diff makes RWTicketSpinLock eventually start calling
sched_yield() during shared and aggressive exclusive lock access, to
avoid pathologies that can arise when the number of threads far
exceeds the number of actual cores.
Test Plan:
1. unit tests
2. benchmark w/o + w/ diff
Reviewed By: nathan@fb.com
FB internal diff:
D524897
Jordan DeLong [Sat, 14 Jul 2012 22:57:32 +0000 (15:57 -0700)]
Add folly::applyTuple utility
Summary: Applies a function to a std::tuple of arguments.
Test Plan: Unit test.
Reviewed By: tjackson@fb.com
FB internal diff:
D520190
Tudor Bosman [Sat, 14 Jul 2012 05:56:13 +0000 (22:56 -0700)]
Fix an issue in IOBufQueue::move
Summary: That's all.
Test Plan: .
Reviewed By: philipp@fb.com
FB internal diff:
D520116
Tudor Bosman [Mon, 16 Jul 2012 03:13:19 +0000 (20:13 -0700)]
Add wrapper macros for "final" and "override"
Summary:
... which are supported in gcc 4.7, but not 4.6, and they enable useful
optimizations. As long as we're planning to support both 4.6 and 4.7 in
our code base, we should write code using these macros.
Test Plan:
test added, compiled with both 4.6 and 4.7, verified the
assertion in the test comment by looking at dissassembly output in the
4.7 version
Reviewed By: delong.j@fb.com
FB internal diff:
D520343
Tudor Bosman [Fri, 13 Jul 2012 23:40:30 +0000 (16:40 -0700)]
Add missing include
Test Plan: yes
Reviewed By: delong.j@fb.com
FB internal diff:
D519897
Tudor Bosman [Fri, 13 Jul 2012 22:58:47 +0000 (15:58 -0700)]
rallocm(ALLOCM_ZERO) only zeroes *new* memory
Summary:
If you allocate N bytes and then try to grow that in place using rallocm
(ALLOCM_ZERO | ALLOCM_NO_MOVE) to M > N, our code assumed that all
memory from N to M would be zeroed. In fact, rallocm only zeroes *new*
memory, so if jemalloc actually allocated N1 > N bytes initially,
rallocm will only zero memory from N1 to M.
Fixed by using calloc.
Test Plan: thread_local_test, tested in production
Reviewed By: delong.j@fb.com
FB internal diff:
D519781
Rajat Goel [Fri, 13 Jul 2012 18:00:51 +0000 (11:00 -0700)]
A sample diff thats ports FormatTests to benchmarks
Summary:
Is there any better solution? Maybe a generic flag in Benchmarks to say
please don't run benchmarks?
Test Plan: (not in folly)
Reviewed By: andrei.alexandrescu@fb.com
FB internal diff:
D503619
Tudor Bosman [Fri, 13 Jul 2012 03:18:29 +0000 (20:18 -0700)]
Unbreak build.
Summary: I could have sworn I undid that un-templatification of the constructor.
Test Plan: build folly/test
Reviewed By: andrei.alexandrescu@fb.com
FB internal diff:
D518981
Tudor Bosman [Thu, 12 Jul 2012 23:33:38 +0000 (16:33 -0700)]
Range<const char*> -> Range<const unsigned char*> implicit conversion
Summary: As they can both be used to represent ranges of bytes.
Test Plan: test added
Reviewed By: andrei.alexandrescu@fb.com
FB internal diff:
D518666
Tudor Bosman [Tue, 10 Jul 2012 20:40:31 +0000 (13:40 -0700)]
(minor changes, part of unrelated diff)
Test Plan: No
Reviewed By: lucian@fb.com
FB internal diff:
D515713
Tudor Bosman [Wed, 11 Jul 2012 21:28:00 +0000 (14:28 -0700)]
Make Bits<T> work with T = Unaligned<X> (X is unsigned integral type)
Test Plan: all folly tests
Reviewed By: andrei.alexandrescu@fb.com
FB internal diff:
D517118
Andrew Gallagher [Wed, 11 Jul 2012 21:03:19 +0000 (14:03 -0700)]
folly/Malloc.h: use libstdc++-safe exception wrappers
Summary:
gcc errors out when code that throws is compiled with
'-fno-exceptions'. Since we add Malloc.h into our custom libstdc++
use the exception wrappers from functexcept.h so that they can build
with third-party projects that use '-fno-exceptions'.
Test Plan:
Built llvm in the gcc-4.7.1-glibc-2.14.1-fb platform with these
changes.
Reviewed By: tudorb@fb.com
FB internal diff:
D516577
Philip Pronin [Tue, 10 Jul 2012 08:27:50 +0000 (01:27 -0700)]
fix memory order in AtomicHashMap<>::findInternal()
Summary:
Looks like a typo, it should obviously be std::memory_order_relaxed (all
necessary synchronization is done on numMapsAllocated_).
Test Plan: compiled it, ran tests
Reviewed By: sahrens@fb.com
FB internal diff:
D515322
Andrew Gallagher [Mon, 9 Jul 2012 03:11:11 +0000 (20:11 -0700)]
folly: fix build on ubuntu and fedora platforms
Summary:
A boost regex dependency wasn't added to the Makefile.am file. Also
the it appears that boost thread lib dependencies had a typo in the
makefile variable name.
Test Plan: ran builds on ubunutu and fedora VMs
Reviewed By: tudorb@fb.com
FB internal diff:
D514039
Tudor Bosman [Fri, 6 Jul 2012 02:25:17 +0000 (19:25 -0700)]
(minor changes, part of unrelated diff)
Test Plan: no
Reviewed By: philipp@fb.com
FB internal diff:
D512868
Tudor Bosman [Sat, 7 Jul 2012 00:12:07 +0000 (17:12 -0700)]
Add IOBufQueue::prepend, fix bug in IOBuf::prepend.
Summary:
IOBuf::prepend needs to increment length_.
Added IOBufQueue::prepend, which uses the headroom in the first buffer
instead of growing the queue at the head.
Test Plan: tests added
Reviewed By: simpkins@fb.com
FB internal diff:
D513676
Eitan Frachtenberg [Wed, 13 Jun 2012 00:07:02 +0000 (17:07 -0700)]
Improve digits_to() performance
Summary:
This optimization eliminates about 75% of the multiplications and bounds
checking in the original code by using constant lookup tables to convert
from decical digit to (shifted) binary number, instead of arithmetic.
The total cost of the lookup tables is 2KB of static memory, but the
average throughput gain across the range from 1 to 19 characters is 27%.
The throughput distributes as follows: (in million iters/sec)
Bytes Orig New Speedup
1 101.31 110.12 109%
2 97.42 110.12 113%
3 97.42 105.53 108%
4 79.13 101.31 128%
5 74.48 97.42 131%
6 74.48 93.81 126%
7 70.35 93.81 133%
8 61.77 79.14 128%
9 58.9 72.35 123%
10 58.9 74.48 126%
11 56.28 74.48 132%
12 50.22 64.93 129%
13 48.52 60.3 124%
14 47.74 61.77 129%
15 46.88 61.77 132%
16 42.54 55.06 129%
17 41.51 51.69 125%
18 40.97 52.76 129%
19 39.57 52.76 133%
Test Plan: Passes all unit tests
Reviewed By: andrei.alexandrescu@fb.com
FB internal diff:
D493245
Tudor Bosman [Wed, 4 Jul 2012 00:02:05 +0000 (17:02 -0700)]
Add multi-bit operations to folly/experimental/Bits.h
Summary: Add ability to set and get N consecutive bits from the bit sequence.
Test Plan: test added
Reviewed By: lucian@fb.com
FB internal diff:
D511438
Rafael Sagula [Thu, 28 Jun 2012 23:05:21 +0000 (16:05 -0700)]
adding StringPiece constructor that takes a piece of another StringPiece
Summary:
adding what seems to be a missing constructor to StringPiece --
I need to be able to take a piece of another StringPiece. (It's possible
to do that with all sorts of strings already, except StringPiece...)
Test Plan: na -- tested as part of other (dependent) diffs
Reviewed By: delong.j@fb.com
FB internal diff:
D508545
Tudor Bosman [Mon, 2 Jul 2012 00:40:06 +0000 (17:40 -0700)]
Remove unnecessary member variable.
Test Plan: No
Reviewed By: andrei.alexandrescu@fb.com
FB internal diff:
D509324
Spencer Ahrens [Sat, 30 Jun 2012 18:01:06 +0000 (11:01 -0700)]
add bm_max/min_iters and bm_regex
Summary: These were handy in the old framework and easy enough to add.
Test Plan:
ran ThreadCachedIntTest - got better (but not perfect due to
subtraction of single-threaded baseline from multi-threaded results).
Reviewed By: sherman.ye@fb.com
FB internal diff:
D490324
Andrew Gallagher [Fri, 29 Jun 2012 23:47:49 +0000 (16:47 -0700)]
folly: get building with gcc-4.7.1
Summary:
A lot of libstdc++-4.7 headers dropped includes of unistdc.h, so
we'll probably see more of these.
Test Plan: built folly
Reviewed By: simpkins@fb.com
FB internal diff:
D508871
Tudor Bosman [Mon, 11 Jun 2012 23:24:30 +0000 (16:24 -0700)]
Minor changes to folly/experimental/io
Reviewed By: philipp@fb.com
FB internal diff:
D491952
Rajat Goel [Mon, 25 Jun 2012 20:41:49 +0000 (13:41 -0700)]
Adding support to output benchmarks result in JSON
Summary: The main reason being so that they can be fed to some automated systems, if required.
Test Plan: Just ran few benchmarks locally
Reviewed By: andrewjcg@fb.com
FB internal diff:
D501025
Tudor Bosman [Fri, 15 Jun 2012 00:07:00 +0000 (17:07 -0700)]
Add TypedIOBuf.
Summary: Simple class to handle IOBuf as an array of objects of fixed size.
Test Plan: test added
Reviewed By: brianp@fb.com
FB internal diff:
D497287
Mike Curtiss [Thu, 7 Jun 2012 07:32:14 +0000 (00:32 -0700)]
Add sizeGuess() member to ProducerConsumerQueue
Summary:
This is part 1 of a change to add hysteretic behavior to a blocking queue based on ProducerConsumerQueue.
Knowing the size is useful for monitoring and possibly for objects that contain a ProducerConsumerQueue.
Test Plan:
Added tiny test-case.
Tests pass
Reviewed By: delong.j@fb.com
FB internal diff:
D496787
Tudor Bosman [Wed, 13 Jun 2012 23:52:38 +0000 (16:52 -0700)]
Add an allocate() member function on IOBufQueue
Summary: Function is documented in the header.
Reviewed By: soren@fb.com
FB internal diff:
D494315
Sherman Ye [Wed, 9 May 2012 16:26:13 +0000 (09:26 -0700)]
Fix a typo in benchmark comments
Summary: As title
Test Plan: Deployed to wormhole_apps.dragon.dev
Reviewed By: asharma@fb.com
FB internal diff:
D493253
Tudor Bosman [Thu, 14 Jun 2012 19:14:04 +0000 (12:14 -0700)]
Unbreak Ubuntu build.
Summary: follybenchmark and follyfingerprint need folly to work.
Test Plan: built on ubuntu
Reviewed By: andrewjcg@fb.com
FB internal diff:
D494955
Andrew Gallagher [Thu, 14 Jun 2012 19:24:31 +0000 (12:24 -0700)]
Fix clang narrowing error in GroupVarintTables
Summary:
The __m128i type is a pair of 64-bit signed ints and the values
generated in generate_varint_tables.py overflow this range, which
causes clang to complain.
Test Plan:
Built and ran unittests. Also verified that the GroupVarintTable.o
data section was identical with and w/o this change.
Reviewed By: tudorb@fb.com
FB internal diff:
D494645
Tudor Bosman [Thu, 14 Jun 2012 01:57:34 +0000 (18:57 -0700)]
Clarify split / splitTo comments.
Test Plan: No
Reviewed By: delong.j@fb.com
FB internal diff:
D494525
Chip Turner [Fri, 8 Jun 2012 21:53:51 +0000 (14:53 -0700)]
Move and refactor code
Summary:
Moves some string manipulation code like humanify into folly
Moves hash-related functions into folly and removes some old includes
to clean up some code
Adds generic hashing for tuples, similar to pairs
Updates all of the build breakages from the above
Test Plan: run unit tests
Reviewed By: delong.j@fb.com
FB internal diff:
D490478
Tudor Bosman [Wed, 13 Jun 2012 00:37:21 +0000 (17:37 -0700)]
Fix narrowing warning (if enabled).
Summary: They're (signed) long long.
Test Plan: built, folly/test
Reviewed By: andrewjcg@fb.com
FB internal diff:
D493270
Tudor Bosman [Wed, 13 Jun 2012 00:08:04 +0000 (17:08 -0700)]
Fix intermittent failure in concurrent_skip_list_test
Summary: It creates too many threads, stop when we run out of resources.
Test Plan: by hand, in a loop, in a memory-constrained environment
Reviewed By: delong.j@fb.com
FB internal diff:
D493239
Tudor Bosman [Tue, 12 Jun 2012 22:44:21 +0000 (15:44 -0700)]
Fix build and test.
Summary:
Fix bug in FBStringTest (don't reuse the same file name)
Don't use VLOG, as that requires that glog is compiled with gflags
support, which it isn't always.
Add other targets and tests, make all tests pass.
Test Plan: tests
Reviewed By: delong.j@fb.com
FB internal diff:
D493018
Tudor Bosman [Tue, 12 Jun 2012 22:44:21 +0000 (15:44 -0700)]
Fix build and test.
Summary:
Fix bug in FBStringTest (don't reuse the same file name)
Don't use VLOG, as that requires that glog is compiled with gflags
support, which it isn't always.
Add other targets and tests, make all tests pass.
Test Plan: tests
Reviewed By: delong.j@fb.com
FB internal diff:
D493018
Tudor Bosman [Tue, 12 Jun 2012 16:20:03 +0000 (09:20 -0700)]
Move Rabin fingerprinting code to folly.
Summary:
Also generate fingerprint tables every time, so the code doesn't rot.
TODO(tudorb): move benchmark to folly
TODO(tudorb): Include the program used to generate the polynomials
(can't build as it requires NTL from http://www.shoup.net/ntl/)
Test Plan: folly/test
Reviewed By: andrei.alexandrescu@fb.com
FB internal diff:
D492455
Tudor Bosman [Tue, 12 Jun 2012 00:09:43 +0000 (17:09 -0700)]
InternalBuf doesn't need capacity
Summary: as it's always kMaxInternalDataSize.
Test Plan: all tests in folly/experimental/io/test, both opt and dbg
Reviewed By: brianp@fb.com
FB internal diff:
D492008
Tudor Bosman [Mon, 11 Jun 2012 23:18:22 +0000 (16:18 -0700)]
Properly align internal buffer in IOBuf.
Summary:
Yes, it's gcc specific, because alignas and max_align_t aren't in gcc
4.6.2.
Test Plan: iobuf_test, test added
Reviewed By: brianp@fb.com
FB internal diff:
D491939
Tudor Bosman [Mon, 11 Jun 2012 20:58:15 +0000 (13:58 -0700)]
Add IOBuf::takeOwnership(unique_ptr<T>&&).
Summary:
Useful for in-place serialization. Dangerous, obviously, but anything
involving IOBuf usually is.
Test Plan: test added
Reviewed By: brianp@fb.com
FB internal diff:
D491663
Tudor Bosman [Sat, 9 Jun 2012 22:32:10 +0000 (15:32 -0700)]
Typos.
Test Plan: No
Reviewed By: delong.j@fb.com
FB internal diff:
D491038
Tudor Bosman [Sat, 9 Jun 2012 04:30:50 +0000 (21:30 -0700)]
D'oh: fix size computation in ThreadLocalDetail.h
Test Plan: thread_local_test
Reviewed By: ldemailly@fb.com
FB internal diff:
D490912
Philip Pronin [Fri, 8 Jun 2012 08:37:24 +0000 (01:37 -0700)]
folly::detail::futex should be inline
Summary: It breaks build.
Test Plan: will check *_try builds
Reviewed By: andrei.alexandrescu@fb.com
FB internal diff:
D489935
Tudor Bosman [Thu, 7 Jun 2012 20:59:38 +0000 (13:59 -0700)]
Add IOBufQueue::wrapBuffer, which handles buffers > 4GB.
Test Plan: test added
Reviewed By: brianp@fb.com
FB internal diff:
D489158
Tudor Bosman [Thu, 7 Jun 2012 21:26:44 +0000 (14:26 -0700)]
Add links to README.
Test Plan: No
Reviewed By: andrei.alexandrescu@fb.com
FB internal diff:
D489199
Tudor Bosman [Thu, 7 Jun 2012 02:56:43 +0000 (19:56 -0700)]
Deuglify unaligned accesses in GroupVarint.
Test Plan: folly/test
Reviewed By: andrei.alexandrescu@fb.com
FB internal diff:
D488631
Tudor Bosman [Thu, 17 May 2012 21:31:04 +0000 (14:31 -0700)]
EventCount: "condition variable" for lock-free algorithms
Summary:
This allows you to convert non-blocking lock-free algorithms into
blocking versions.
See
http://www.1024cores.net/home/lock-free-algorithms/eventcounts,
http://software.intel.com/en-us/forums/showthread.php?t=62364,
http://www.akkadia.org/drepper/futex.pdf
Test Plan: new test
Reviewed By: delong.j@fb.com
FB internal diff:
D474570
Andrew Gallagher [Tue, 5 Jun 2012 23:13:31 +0000 (16:13 -0700)]
fbstring: remove reference to /home/engshare/ paths
Summary: Reported by https://github.com/facebook/folly/issues/8
Test Plan: no
Reviewed By: tudorb@fb.com
FB internal diff:
D487572
Jordan DeLong [Sun, 3 Jun 2012 21:58:50 +0000 (14:58 -0700)]
Fix some memory_order parameters in AtomicHashMap
Summary: Herb Sutter noticed an error in the AHM find pseudo-code at
the C++ conference, and the error is in the real implementation too.
We should be using memory_order_acquire, because we need the load of
the key to happen before any subsequent loads of the value itself.
Our implementation is conservative for a memory_order_relaxed load
(we generate the same code as if it were memory_order_acquire---i.e. a
compiler barrier but no memory barriers), so this should not change the
generated code. Correctness is a good idea, though (when we upgrade
to gcc 4.7's atomics it might not be as conservative). Also, erase was
doing three loads when one is enough. ... also fixes an exception safety
bug in insert. (Phew.)
Test Plan: Ran the AHM unit tests, debug and opt.
Reviewed By: andrei.alexandrescu@fb.com
FB internal diff:
D485744
Christopher C. Aycock [Sun, 3 Jun 2012 03:59:02 +0000 (00:59 -0300)]
Some typos corrects, and collapsed the two descriptions of Bits.h into one.
Summary: https://github.com/facebook/folly/pull/1
Test Plan: N/A.
Reviewed By: andrewjcg@fb.com
FB internal diff:
D485738
Tudor Bosman [Tue, 5 Jun 2012 07:04:29 +0000 (00:04 -0700)]
Add #include <new> to folly/Malloc.h.
Test Plan: folly tests
Reviewed By: philipp@fb.com, andrei.alexandrescu@fb.com
FB internal diff:
D486884,
D487376
Tudor Bosman [Tue, 5 Jun 2012 05:24:21 +0000 (22:24 -0700)]
Check the return value from malloc / realloc.
Summary:
https://github.com/facebook/folly/issues/7
Wrappers: checkedMalloc / checkedRealloc / checkedCalloc
Test Plan: all folly tests
FB internal diff:
D486841
Michael Curtiss [Tue, 5 Jun 2012 05:16:44 +0000 (22:16 -0700)]
Fix error in ProducerQueue::isEmpty
Summary:
Oops.
Also: documented the slightly confusing behavior w.r.t. 'size'.
Test Plan: Added a unit test.
Reviewers: tjackson, jdelong
Reviewed By: jdelong
CC: folly@lists, lr, bagashe
Differential Revision: https://phabricator.fb.com/
D486832
Tudor Bosman [Tue, 5 Jun 2012 02:50:18 +0000 (19:50 -0700)]
Typos.
Summary:
As pointed out by orbitcowboy at
https://github.com/facebook/folly/issues/6
Test Plan: No
Reviewers: jdelong, aalexandre
Reviewed By: jdelong
CC: folly@lists, bagashe
Differential Revision: https://phabricator.fb.com/
D486754
Jordan DeLong [Sun, 3 Jun 2012 22:34:03 +0000 (15:34 -0700)]
Move LICENCE and README to top level directory
Summary: For the public version of the repo.
Test Plan: N/A.
Chip Turner [Sun, 3 Jun 2012 04:23:59 +0000 (21:23 -0700)]
add a .gitignore and remove folly-config.h (generated file) from the repo
Tom Jackson [Mon, 4 Jun 2012 23:57:49 +0000 (16:57 -0700)]
Adding support for in-place use of ProducerConsumerQueue.
Summary: As it is, ProducerConsumerQueue requires that values are moved or copied on the way out of the queue. It would be nice if it was possible to get a reference to the front of the queue, use it in place, then destruct it.
Test Plan: Unit tests
FB internal diff:
D484538
Jordan DeLong [Sun, 3 Jun 2012 02:43:28 +0000 (19:43 -0700)]
Add a LICENSE file for folly
Summary: Adds a copy of the apache license 2.0.
Test Plan: None.
Jordan DeLong [Sat, 2 Jun 2012 23:13:53 +0000 (16:13 -0700)]
Update the folly/README
Summary: Now that we have an Overview.md.
Test Plan: None.
Jordan DeLong [Sat, 2 Jun 2012 18:19:29 +0000 (11:19 -0700)]
Jordan DeLong [Fri, 1 Jun 2012 21:00:42 +0000 (14:00 -0700)]
initial