summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* Refactor chunk_purge_wrapper() to take extent argument.Jason Evans2016-06-034-12/+10
|
* Refactor chunk_[de]commit_wrapper() to take extent arguments.Jason Evans2016-06-033-16/+14
|
* Refactor chunk_dalloc_{cache,wrapper}() to take extent arguments.Jason Evans2016-06-0310-198/+147
| | | | | | Rename arena_extent_[d]alloc() to extent_[d]alloc(). Move all chunk [de]registration responsibility into chunk.c.
* Add/use chunk_split_wrapper().Jason Evans2016-06-037-519/+563
| | | | | | Remove redundant ptr/oldsize args from huge_*(). Refactor huge/chunk/arena code boundaries.
* Add/use chunk_merge_wrapper().Jason Evans2016-06-036-93/+101
|
* Add/use chunk_commit_wrapper().Jason Evans2016-06-034-30/+44
|
* Add/use chunk_decommit_wrapper().Jason Evans2016-06-034-7/+20
|
* Merge chunk_alloc_base() into its only caller.Jason Evans2016-06-034-23/+9
|
* Replace extent_tree_szad_* with extent_heap_*.Jason Evans2016-06-039-103/+332
|
* Use rtree rather than [sz]ad trees for chunk split/coalesce operations.Jason Evans2016-06-036-197/+233
|
* Dodge ivsalloc() assertion in test code.Jason Evans2016-06-031-1/+16
|
* Remove redundant chunk argument from chunk_{,de,re}register().Jason Evans2016-06-034-25/+25
|
* Fix opt_zero-triggered in-place huge reallocation zeroing.Jason Evans2016-06-031-4/+4
| | | | | | Fix huge_ralloc_no_move_expand() to update the extent's zeroed attribute based on the intersection of the previous value and that of the newly merged trailing extent.
* Add extent_past_get().Jason Evans2016-06-032-0/+9
|
* Replace extent_achunk_[gs]et() with extent_slab_[gs]et().Jason Evans2016-06-038-33/+33
|
* Add extent_active_[gs]et().Jason Evans2016-06-037-21/+37
| | | | Always initialize extents' runs_dirty and chunks_cache linkage.
* Move *PAGE* definitions to pages.h.Jason Evans2016-06-032-15/+15
|
* Set/unset rtree node for last chunk of extents.Jason Evans2016-06-031-4/+41
| | | | | Set/unset rtree node for last chunk of extents, so that the rtree can be used for chunk coalescing.
* Add rtree element witnesses.Jason Evans2016-06-0310-40/+241
|
* Refactor rtree to always use base_alloc() for node allocation.Jason Evans2016-06-0315-217/+315
|
* Use rtree-based chunk lookups rather than pointer bit twiddling.Jason Evans2016-06-0314-504/+548
| | | | | | | | | | | Look up chunk metadata via the radix tree, rather than using CHUNK_ADDR2BASE(). Propagate pointer's containing extent. Minimize extent lookups by doing a single lookup (e.g. in free()) and propagating the pointer's extent into nearly all the functions that may need it.
* Add element acquire/release capabilities to rtree.Jason Evans2016-06-036-136/+303
| | | | | | | | This makes it possible to acquire short-term "ownership" of rtree elements so that it is possible to read an extent pointer *and* read the extent's contents with a guarantee that the element will not be modified until the ownership is released. This is intended as a mechanism for resolving rtree read/write races rather than as a way to lock extents.
* Remove obsolete reference to Valgrind and quarantine.Jason Evans2016-06-031-3/+1
|
* Rename extent_node_t to extent_t.Jason Evans2016-05-1614-486/+491
|
* Simplify run quantization.Jason Evans2016-05-164-169/+31
|
* Refactor runs_avail.Jason Evans2016-05-167-53/+81
| | | | | | | | Use pszind_t size classes rather than szind_t size classes, and always reserve space for NPSIZES elements. This removes unused heaps that are not multiples of the page size, and adds (currently) unused heaps for all huge size classes, with the immediate benefit that the size of arena_t allocations is constant (no longer dependent on chunk size).
* Implement pz2ind(), pind2sz(), and psz2u().Jason Evans2016-05-136-26/+203
| | | | | | | These compute size classes and indices similarly to size2index(), index2size() and s2u(), respectively, but using the subset of size classes that are multiples of the page size. Note that pszind_t and szind_t are not interchangeable.
* Initialize arena_bin_info at compile time rather than at boot time.Jason Evans2016-05-135-96/+100
| | | | This resolves #370.
* Implement BITMAP_INFO_INITIALIZER(nbits).Jason Evans2016-05-133-131/+366
| | | | This allows static initialization of bitmap_info_t structures.
* Remove redzone support.Jason Evans2016-05-1314-301/+41
| | | | This resolves #369.
* Remove quarantine support.Jason Evans2016-05-1324-519/+51
|
* Remove Valgrind support.Jason Evans2016-05-1323-409/+33
|
* Use TSDN_NULL rather than NULL as appropriate.Jason Evans2016-05-133-9/+9
|
* Fix a typo.Jason Evans2016-05-121-1/+1
|
* Merge branch 'dev'4.2.0Jason Evans2016-05-1278-2428/+4916
|\
| * Update ChangeLog for 4.2.0.Jason Evans2016-05-121-1/+1
| |
| * Guard tsdn_tsd() call with tsdn_null() check.Jason Evans2016-05-111-2/+2
| |
| * Mangle tested functions as n_witness_* rather than witness_*_impl.Jason Evans2016-05-111-9/+8
| |
| * Optimize witness fast path.Jason Evans2016-05-114-132/+157
| | | | | | | | | | | | | | | | | | | | | | Short-circuit commonly called witness functions so that they only execute in debug builds, and remove equivalent guards from mutex functions. This avoids pointless code execution in witness_assert_lockless(), which is typically called twice per allocation/deallocation function invocation. Inline commonly called witness functions so that optimized builds can completely remove calls as dead code.
| * Fix chunk accounting related to triggering gdump profiles.Jason Evans2016-05-112-0/+16
| | | | | | | | | | Fix in place huge reallocation to update the chunk counters that are used for triggering gdump profiles.
| * Disable junk filling for tests that could otherwise easily OOM.Jason Evans2016-05-112-0/+8
| |
| * Resolve bootstrapping issues when embedded in FreeBSD libc.Jason Evans2016-05-1134-1554/+1707
| | | | | | | | | | | | | | | | | | | | | | | | | | b2c0d6322d2307458ae2b28545f8a5c9903d7ef5 (Add witness, a simple online locking validator.) caused a broad propagation of tsd throughout the internal API, but tsd_fetch() was designed to fail prior to tsd bootstrapping. Fix this by splitting tsd_t into non-nullable tsd_t and nullable tsdn_t, and modifying all internal APIs that do not critically rely on tsd to take nullable pointers. Furthermore, add the tsd_booted_get() function so that tsdn_fetch() can probe whether tsd bootstrapping is complete and return NULL if not. All dangerous conversions of nullable pointers are tsdn_tsd() calls that assert-fail on invalid conversion.
| * Fix tsd bootstrapping for a0malloc().Jason Evans2016-05-077-43/+101
| |
| * Add LG_QUANTUM definition for the RISC-V architecture.Jason Evans2016-05-071-0/+3
| |
| * Update ChangeLog.Jason Evans2016-05-061-0/+22
| |
| * Update private_symbols.txt.Jason Evans2016-05-061-2/+11
| |
| * Optimize the fast paths of calloc() and [m,d,sd]allocx().Jason Evans2016-05-066-243/+137
| | | | | | | | | | | | | | | | This is a broader application of optimizations to malloc() and free() in f4a0f32d340985de477bbe329ecdaecd69ed1055 (Fast-path improvement: reduce # of branches and unnecessary operations.). This resolves #321.
| * Modify pages_map() to support mapping uncommitted virtual memory.Jason Evans2016-05-067-27/+117
| | | | | | | | | | | | | | | | | | | | | | If the OS overcommits: - Commit all mappings in pages_map() regardless of whether the caller requested committed memory. - Linux-specific: Specify MAP_NORESERVE to avoid unfortunate interactions with heuristic overcommit mode during fork(2). This resolves #193.
| * Scale leak report summary according to sampling probability.Jason Evans2016-05-041-18/+38
| | | | | | | | | | | | | | This makes the numbers reported in the leak report summary closely match those reported by jeprof. This resolves #356.
| * Add the stats.retained and stats.arenas.<i>.retained statistics.Jason Evans2016-05-047-6/+70
| | | | | | | | This resolves #367.