server-skynet-source-3rd-je.../include/jemalloc/internal
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
..
arena.h Implement metadata statistics. 2015-01-23 23:34:43 -08:00
atomic.h Implement more atomic operations. 2015-02-04 16:50:05 -08:00
base.h Refactor base_alloc() to guarantee demand-zeroed memory. 2015-02-04 16:51:53 -08:00
bitmap.h Convert to uniform style: cond == false --> !cond 2014-10-03 10:16:09 -07:00
chunk_dss.h teach the dss chunk allocator to handle new_addr 2014-11-28 16:11:19 -08:00
chunk_mmap.h Refactor huge allocation to be managed by arenas. 2014-05-15 22:36:41 -07:00
chunk.h Refactor rtree to be lock-free. 2015-02-04 16:51:53 -08:00
ckh.h Convert all tsd variables to reside in a single tsd structure. 2014-09-23 02:36:08 -07:00
ctl.h Implement metadata statistics. 2015-01-23 23:34:43 -08:00
extent.h Reduce extent_node_t size to fit in one cache line. 2015-02-04 16:51:53 -08:00
hash.h Style and spelling fixes. 2014-12-08 16:34:04 -08:00
huge.h Implement metadata statistics. 2015-01-23 23:34:43 -08:00
jemalloc_internal_decls.h Add a isblank definition for MSVC < 2013 2015-01-09 14:33:46 -08:00
jemalloc_internal_defs.h.in Ignore MALLOC_CONF in set{uid,gid,cap} binaries. 2014-12-14 15:36:15 -08:00
jemalloc_internal_macros.h Use KQU() rather than QU() where applicable. 2014-05-28 21:17:42 -07:00
jemalloc_internal.h.in Refactor rtree to be lock-free. 2015-02-04 16:51:53 -08:00
mb.h Simplify small size class infrastructure. 2012-02-28 16:50:47 -08:00
mutex.h correctly detect adaptive mutexes in pthreads 2014-09-29 16:10:40 -07:00
private_namespace.sh Refactor to support more varied testing. 2013-12-03 22:06:59 -08:00
private_symbols.txt Refactor rtree to be lock-free. 2015-02-04 16:51:53 -08:00
private_unnamespace.sh Refactor to support more varied testing. 2013-12-03 22:06:59 -08:00
prng.h Whitespace cleanups. 2014-09-04 22:27:26 -07:00
prof.h Implement the prof.gdump mallctl. 2015-01-25 21:21:35 -08:00
public_namespace.sh Fix name mangling for stress tests. 2014-01-16 17:38:01 -08:00
public_unnamespace.sh Fix name mangling for stress tests. 2014-01-16 17:38:01 -08:00
ql.h Style and spelling fixes. 2014-12-08 16:34:04 -08:00
qr.h Style and spelling fixes. 2014-12-08 16:34:04 -08:00
quarantine.h Make quarantine_init() static. 2014-11-07 14:50:38 -08:00
rb.h Style and spelling fixes. 2014-12-08 16:34:04 -08:00
rtree.h Refactor rtree to be lock-free. 2015-02-04 16:51:53 -08:00
size_classes.sh Add --with-lg-tiny-min, generalize --with-lg-quantum. 2014-10-10 22:35:07 -07:00
stats.h Implement metadata statistics. 2015-01-23 23:34:43 -08:00
tcache.h Introduce two new modes of junk filling: "alloc" and "free". 2014-12-14 17:07:26 -08:00
tsd.h Refactor bootstrapping to delay tsd initialization. 2015-01-22 14:04:27 -08:00
util.h Add (x != 0) assertion to lg_floor(x). 2015-02-04 16:51:53 -08:00
valgrind.h mark some conditions as unlikely 2014-09-10 21:49:42 -04:00