Jason Evans 8d0e04d42f Refactor rtree to be lock-free.
Recent huge allocation refactoring associates huge allocations with
arenas, but it remains necessary to quickly look up huge allocation
metadata during reallocation/deallocation.  A global radix tree remains
a good solution to this problem, but locking would have become the
primary bottleneck after (upcoming) migration of chunk management from
global to per arena data structures.

This lock-free implementation uses double-checked reads to traverse the
tree, so that in the steady state, each read or write requires only a
single atomic operation.

This implementation also assures that no more than two tree levels
actually exist, through a combination of careful virtual memory
allocation which makes large sparse nodes cheap, and skipping the root
node on x64 (possible because the top 16 bits are all 0 in practice).
2015-02-04 16:51:53 -08:00
..
2015-01-23 23:34:43 -08:00
2015-02-04 16:50:05 -08:00
2015-02-04 16:51:53 -08:00
2015-01-23 23:34:43 -08:00
2014-12-08 16:34:04 -08:00
2015-01-23 23:34:43 -08:00
2012-02-28 16:50:47 -08:00
2014-09-04 22:27:26 -07:00
2015-01-25 21:21:35 -08:00
2014-12-08 16:34:04 -08:00
2014-12-08 16:34:04 -08:00
2014-11-07 14:50:38 -08:00
2014-12-08 16:34:04 -08:00
2015-02-04 16:51:53 -08:00
2015-01-23 23:34:43 -08:00
2015-02-04 16:51:53 -08:00
2014-09-10 21:49:42 -04:00