aboutsummaryrefslogtreecommitdiff
path: root/INSTALL
AgeCommit message (Collapse)Author
2016-03-14Add --with-version.Jason Evans
Also avoid deleting the VERSION file while trying to (re)generate it. This resolves #305.
2016-02-19Add --with-malloc-conf.Jason Evans
Add --with-malloc-conf, which makes it possible to embed a default options string during configuration.
2015-08-12Stop forcing --enable-munmap on MinGW.Jason Evans
This is no longer necessary because of the more general chunk merge/split approach to dealing with map coalescing.
2015-07-24Implement support for non-coalescing maps on MinGW.Jason Evans
- Do not reallocate huge objects in place if the number of backing chunks would change. - Do not cache multi-chunk mappings. This resolves #213.
2015-05-06Implement cache index randomization for large allocations.Jason Evans
Extract szad size quantization into {extent,run}_quantize(), and . quantize szad run sizes to the union of valid small region run sizes and large run sizes. Refactor iteration in arena_run_first_fit() to use run_quantize{,_first,_next(), and add support for padded large runs. For large allocations that have no specified alignment constraints, compute a pseudo-random offset from the beginning of the first backing page that is a multiple of the cache line size. Under typical configurations with 4-KiB pages and 64-byte cache lines this results in a uniform distribution among 64 page boundary offsets. Add the --disable-cache-oblivious option, primarily intended for performance testing. This resolves #13.
2015-03-18Restore --enable-ivsalloc.Jason Evans
However, unlike before it was removed do not force --enable-ivsalloc when Darwin zone allocator integration is enabled, since the zone allocator code uses ivsalloc() regardless of whether malloc_usable_size() and sallocx() do. This resolves #211.
2015-02-12Move centralized chunk management into arenas.Jason Evans
Migrate all centralized data structures related to huge allocations and recyclable chunks into arena_t, so that each arena can manage huge allocations and recyclable virtual memory completely independently of other arenas. Add chunk node caching to arenas, in order to avoid contention on the base allocator. Use chunks_rtree to look up huge allocations rather than a red-black tree. Maintain a per arena unsorted list of huge allocations (which will be needed to enumerate huge allocations during arena reset). Remove the --enable-ivsalloc option, make ivsalloc() always available, and use it for size queries if --enable-debug is enabled. The only practical implications to this removal are that 1) ivsalloc() is now always available during live debugging (and the underlying radix tree is available during core-based debugging), and 2) size query validation can no longer be enabled independent of --enable-debug. Remove the stats.chunks.{current,total,high} mallctls, and replace their underlying statistics with simpler atomically updated counters used exclusively for gdump triggering. These statistics are no longer very useful because each arena manages chunks independently, and per arena statistics provide similar information. Simplify chunk synchronization code, now that base chunk allocation cannot cause recursive lock acquisition.
2014-10-14Fix line wrapping.Jason Evans
2014-10-10Add --with-lg-tiny-min, generalize --with-lg-quantum.Jason Evans
2014-10-09Add configure options.Jason Evans
Add: --with-lg-page --with-lg-page-sizes --with-lg-size-class-group --with-lg-quantum Get rid of STATIC_PAGE_SHIFT, in favor of directly setting LG_PAGE. Fix various edge conditions exposed by the configure options.
2014-09-23Add instructions for installing from non-packaged sources.Jason Evans
2014-09-04Whitespace cleanups.Jason Evans
2014-05-15Refactor huge allocation to be managed by arenas.Jason Evans
Refactor huge allocation to be managed by arenas (though the global red-black tree of huge allocations remains for lookup during deallocation). This is the logical conclusion of recent changes that 1) made per arena dss precedence apply to huge allocation, and 2) made it possible to replace the per arena chunk allocation/deallocation functions. Remove the top level huge stats, and replace them with per arena huge stats. Normalize function names and types to *dalloc* (some were *dealloc*). Remove the --enable-mremap option. As jemalloc currently operates, this is a performace regression for some applications, but planned work to logarithmically space huge size classes should provide similar amortized performance. The motivation for this change was that mremap-based huge reallocation forced leaky abstractions that prevented refactoring.
2014-04-15Make dss non-optional, and fix an "arena.<i>.dss" mallctl bug.Jason Evans
Make dss non-optional on all platforms which support sbrk(2). Fix the "arena.<i>.dss" mallctl to return an error if "primary" or "secondary" precedence is specified, but sbrk(2) is not supported.
2014-04-14Reverse the cc-silence default.Jason Evans
Replace --enable-cc-silence with --disable-cc-silence, so that by default people won't see spurious warnings when building jemalloc.
2014-04-14Remove the *allocm() API, which is superceded by the *allocx() API.Jason Evans
2013-12-06Add test code coverage analysis.Jason Evans
Add test code coverage analysis based on gcov.
2013-12-03Refactor to support more varied testing.Jason Evans
Refactor the test harness to support three types of tests: - unit: White box unit tests. These tests have full access to all internal jemalloc library symbols. Though in actuality all symbols are prefixed by jet_, macro-based name mangling abstracts this away from test code. - integration: Black box integration tests. These tests link with the installable shared jemalloc library, and with the exception of some utility code and configure-generated macro definitions, they have no access to jemalloc internals. - stress: Black box stress tests. These tests link with the installable shared jemalloc library, as well as with an internal allocator with symbols prefixed by jet_ (same as for unit tests) that can be used to allocate data structures that are internal to the test code. Move existing tests into test/{unit,integration}/ as appropriate. Split out internal parts of jemalloc_defs.h.in and put them in jemalloc_internal_defs.h.in. This reduces internals exposure to applications that #include <jemalloc/jemalloc.h>. Refactor jemalloc.h header generation so that a single header file results, and the prototypes can be used to generate jet_ prototypes for tests. Split jemalloc.h.in into multiple parts (jemalloc_defs.h.in, jemalloc_macros.h.in, jemalloc_protos.h.in, jemalloc_mangle.h.in) and use a shell script to generate a unified jemalloc.h at configure time. Change the default private namespace prefix from "" to "je_". Add missing private namespace mangling. Remove hard-coded private_namespace.h. Instead generate it and private_unnamespace.h from private_symbols.txt. Use similar logic for public symbols, which aids in name mangling for jet_ symbols. Add test_warn() and test_fail(). Replace existing exit(1) calls with test_fail() calls.
2012-12-23Allow to enable ivsalloc independentlyMike Hommey
2012-12-23Allow to disable the zone allocator on DarwinMike Hommey
2012-11-25Allow to build without exporting symbolsMike Hommey
When statically linking jemalloc, it may be beneficial not to export its symbols if it makes sense, which allows the compiler and the linker to do some further optimizations.
2012-05-09Add the --enable-mremap option.Jason Evans
Add the --enable-mremap option, and disable the use of mremap(2) by default, for the same reason that freeing chunks via munmap(2) is disabled by default on Linux: semi-permanent VM map fragmentation.
2012-04-23Clean up documentation and formatting.Jason Evans
2012-04-16Add the --disable-munmap option.Jason Evans
Add the --disable-munmap option, remove the configure test that attempted to detect the VM allocation quirk known to exist on Linux x86[_64], and make --disable-munmap implicit on Linux.
2012-04-11Implement Valgrind support, redzones, and quarantine.Jason Evans
Implement Valgrind support, as well as the redzone and quarantine features, which help Valgrind detect memory errors. Redzones are only implemented for small objects because the changes necessary to support redzones around large and huge objects are complicated by in-place reallocation, to the point that it isn't clear that the maintenance burden is worth the incremental improvement to Valgrind support. Merge arena_salloc() and arena_salloc_demote(). Refactor i[v]salloc() to expose the 'demote' option.
2012-04-05Add utrace(2)-based tracing (--enable-utrace).Jason Evans
2012-03-02Add the --disable-experimental option.Jason Evans
2012-03-02Add fine-grained build/install targets.Jason Evans
2012-03-01Add --with-mangling.Jason Evans
Add the --with-mangling configure option, which can be used to specify name mangling on a per public symbol basis that takes precedence over --with-jemalloc-prefix. Expose the memalign() and valloc() overrides even if --with-jemalloc-prefix is specified. This change does no real harm, and simplifies the code.
2012-02-28Enable support for junk/zero filling by default.Jason Evans
2012-02-28Enable the stats configuration option by default.Jason Evans
2012-02-28Remove the sysv option.Jason Evans
2012-02-28Simplify small size class infrastructure.Jason Evans
Program-generate small size class tables for all valid combinations of LG_TINY_MIN, LG_QUANTUM, and PAGE_SHIFT. Use the appropriate table to generate all relevant data structures, and remove the distinction between tiny/quantum/cacheline/subpage bins. Remove --enable-dynamic-page-shift. This option didn't prove useful in practice, and it prevented optimizations. Add Tilera architecture support.
2012-02-13Make 8-byte tiny size class non-optional.Jason Evans
When tiny size class support was first added, it was intended to support truly tiny size classes (even 2 bytes). However, this wasn't very useful in practice, so the minimum tiny size class has been limited to sizeof(void *) for a long time now. This is too small to be standards compliant, but other commonly used malloc implementations do not even bother using a 16-byte quantum on systems with vector units (SSE2+, AltiVEC, etc.). As such, it is safe in practice to support an 8-byte tiny size class on 64-bit systems that support 16-byte types.
2012-02-13Do not enable lazy locking by default.Jason Evans
Do not enable lazy locking by default, because: - It's fragile (applications can subvert detection of multi-threaded mode). - Thread caching amortizes locking overhead in the default configuration.
2012-02-13Remove the swap feature.Jason Evans
Remove the swap feature, which enabled per application swap files. In practice this feature has not proven itself useful to users.
2011-07-30Add the --with-private-namespace option.Jason Evans
Add the --with-private-namespace option to make it possible to work around library-private symbols being exposed in static libraries.
2011-03-31Move repo contents in jemalloc/ to top level.Jason Evans