summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* Remove bogus dependencyMike Hommey2012-04-121-3/+0
| | | | | test/bitmap.c #includes src/bitmap.c, which is correctly detected by gcc -MM, but building test/bitmap.o doesn't require src/bitmap.o.
* Call base_boot before chunk_boot0Mike Hommey2012-04-121-2/+2
| | | | | Chunk_boot0 calls rtree_new, which calls base_alloc, which locks the base_mtx mutex. That mutex is initialized in base_boot.
* Use a stub replacement and disable dss when sbrk is not supportedMike Hommey2012-04-123-0/+22
|
* Normalize aligned allocation algorithms.Jason Evans2012-04-128-155/+138
| | | | | | | | | | | | | | | Normalize arena_palloc(), chunk_alloc_mmap_slow(), and chunk_recycle_dss() to use the same algorithm for trimming over-allocation. Add the ALIGNMENT_ADDR2BASE(), ALIGNMENT_ADDR2OFFSET(), and ALIGNMENT_CEILING() macros, and use them where appropriate. Remove the run_size_p parameter from sa2u(). Fix a potential deadlock in chunk_recycle_dss() that was introduced by eae269036c9f702d9fa9be497a1a2aa1be13a29e (Add alignment support to chunk_alloc()).
* Implement Valgrind support, redzones, and quarantine.Jason Evans2012-04-1120-170/+840
| | | | | | | | | | | | | 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.
* Rename labels.Jason Evans2012-04-1011-129/+129
| | | | | | | Rename labels from FOO to label_foo in order to avoid system macro definitions, in particular OUT and ERROR on mingw. Reported by Mike Hommey.
* Add alignment support to chunk_alloc().Mike Hommey2012-04-109-138/+87
|
* Remove MAP_NORESERVE supportMike Hommey2012-04-102-28/+14
| | | | It was only used by the swap feature, and that is gone.
* Ignore whitespaces when comparing test results with expected outputMike Hommey2012-04-101-1/+1
| | | | | In mingw, the test result may contain CRLF while the .exp files don't, or the other way around.
* Always initialize tcache data structures.Jason Evans2012-04-061-46/+38
| | | | | | | Always initialize tcache data structures if the tcache configuration option is enabled, regardless of opt_tcache. This fixes "thread.tcache.enabled" mallctl manipulation in the case when opt_tcache is false.
* Remove arena_malloc_prechosen().Jason Evans2012-04-062-15/+1
| | | | | Remove arena_malloc_prechosen(), now that arena_malloc() can be invoked in a way that is semantically equivalent.
* Add utrace(2)-based tracing (--enable-utrace).Jason Evans2012-04-059-1/+118
|
* Fix threaded initialization and enable it on Linux.Jason Evans2012-04-052-3/+6
| | | | Reported by Mike Hommey.
* Add missing "opt.lg_tcache_max" mallctl implementation.Jason Evans2012-04-041-0/+3
|
* Add missing include for ffsl() test.Jason Evans2012-04-041-0/+1
|
* Revert "Use ffsl() in ALLOCM_ALIGN()."Jason Evans2012-04-041-1/+6
| | | | | | | | This reverts commit 722b370399fd6734de6781285ce9a0cffd547bdd. Unfortunately, glibc requires _GNU_SOURCE to be defined before including string.h, but there is no reliable way to get the prototype within jemalloc.h unless _GNU_SOURCE was already defined.
* Add tls_model configuration.Jason Evans2012-04-043-4/+22
| | | | | The tls_model attribute isn't supporte by clang (yet?), so add a configure test that defines JEMALLOC_TLS_MODEL appropriately.
* Add a0malloc(), a0calloc(), and a0free().Jason Evans2012-04-046-29/+89
| | | | | Add a0malloc(), a0calloc(), and a0free(), which are used by FreeBSD's libc to allocate/deallocate TLS in static binaries.
* Postpone mutex initialization on FreeBSD.Jason Evans2012-04-043-13/+58
| | | | | Postpone mutex initialization on FreeBSD until after base allocation is safe.
* Remove obsolete "config.dynamic_page_shift" mallctl documentation.Jason Evans2012-04-031-10/+0
|
* Use $((...)) instead of expr.Jason Evans2012-04-031-15/+15
| | | | | | | Use $((...)) for math in size_classes.h rather than expr, because it is much faster. This is not supported syntax in the classic Bourne shell, but all modern sh implementations support it, including bash, zsh, and ash.
* Finish renaming "arenas.pagesize" to "arenas.page".Jason Evans2012-04-021-11/+10
|
* Clean up *PAGE* macros.Jason Evans2012-04-0213-213/+148
| | | | | | | | | | | s/PAGE_SHIFT/LG_PAGE/g and s/PAGE_SIZE/PAGE/g. Remove remnants of the dynamic-page-shift code. Rename the "arenas.pagesize" mallctl to "arenas.page". Remove the "arenas.chunksize" mallctl, which is redundant with "opt.lg_chunk".
* Revert "Avoid NULL check in free() and malloc_usable_size()."Jason Evans2012-04-025-37/+22
| | | | | | | | | | This reverts commit 96d4120ac08db3f2d566e8e5c3bc134a24aa0afc. ivsalloc() depends on chunks_rtree being initialized. This can be worked around via a NULL pointer check. However, thread_allocated_tsd_get() also depends on initialization having occurred, and there is no way to guard its call in free() that is cheaper than checking whether ptr is NULL.
* Avoid NULL check in free() and malloc_usable_size().Jason Evans2012-04-025-22/+37
| | | | | | | | | Generalize isalloc() to handle NULL pointers in such a way that the NULL checking overhead is only paid when introspecting huge allocations (or NULL). This allows free() and malloc_usable_size() to no longer check for NULL. Submitted by Igor Bukanov and Mike Hommey.
* Move last bit of zone initialization in zone.c, and lazy-initializeMike Hommey2012-04-024-45/+1
|
* Use ffsl() in ALLOCM_ALIGN().Jason Evans2012-04-021-6/+1
| | | | | | Use ffsl() rather than ffs() plus bitshifting in ALLOCM_ALIGN(). The original rational for using ffs() was portability, but the bitmap code has since induced a hard dependency on ffsl().
* Remove vsnprintf() and strtoumax() validation.Jason Evans2012-04-023-30/+1
| | | | | | | | | | Remove code that validates malloc_vsnprintf() and malloc_strtoumax() against their namesakes. The validation code has adequately served its usefulness at this point, and it isn't worth dealing with the different formatting for %p with glibc versus other implementations for NULL pointers ("(nil)" vs. "0x0"). Reported by Mike Hommey.
* Clean up tsd (no functional changes).Jason Evans2012-03-302-13/+5
|
* Work around TLS deallocation via free().Jason Evans2012-03-302-5/+18
| | | | | | | | | glibc uses memalign()/free() to allocate/deallocate TLS, which means that it is unsafe to set TLS variables as a side effect of free() -- they may already be deallocated. Work around this by avoiding tcache_create() within free(). Reported by Mike Hommey.
* Avoid crashes when system libraries use the purgeable zone allocatorMike Hommey2012-03-302-6/+27
|
* Move zone registration to zone.cMike Hommey2012-03-304-28/+23
|
* Change AC_COMPILE_IFELSE into AC_LINK_IFELSE for the __sync_{add, ↵Mike Hommey2012-03-301-14/+14
| | | | | | | sub}_and_fetch() test With the Android NDK, __sync_{add,sub}_and_fetch() compile fine for uint64_t, but the corresponding libgcc function aren't there.
* Add a SYS_write definition on systems where it is not defined in headersMike Hommey2012-03-302-0/+13
| | | | | Namely, in the Android NDK headers, SYS_write is not defined; but __NR_write is.
* Don't use pthread_atfork to register prefork/postfork handlers on OSXMike Hommey2012-03-281-1/+1
| | | | OSX libc calls zone allocators' force_lock/force_unlock already.
* Add the "thread.tcache.enabled" mallctl.Jason Evans2012-03-277-36/+271
|
* Force the lazy-lock feature on FreeBSD.Jason Evans2012-03-241-0/+5
| | | | | | Force the lazy-lock feature on FreeBSD in order to avoid pthread_self(), because it causes allocation. (This change was mistakenly omitted from 41b6afb834b1f5250223678c52bd4f013d4234f6.)
* Check for NULL ptr in malloc_usable_size().Jason Evans2012-03-261-4/+2
| | | | | | Check for NULL ptr in malloc_usable_size(), rather than just asserting that ptr is non-NULL. This matches behavior of other implementations (e.g., glibc and tcmalloc).
* Make zone_{free, realloc, free_definite_size} fallback to the system ↵Mike Hommey2012-03-261-4/+17
| | | | | | | | | | | | allocator if they are called with a pointer that jemalloc didn't allocate It turns out some OSX system libraries (like CoreGraphics on 10.6) like to call malloc_zone_* functions, but giving them pointers that weren't allocated with the zone they are using. Possibly, they do malloc_zone_malloc(malloc_default_zone()) before we register the jemalloc zone, and malloc_zone_realloc(malloc_default_zone()) after. malloc_default_zone() returning a different value in both cases.
* Fix glibc hooks when using both --with-jemalloc-prefix and --with-manglingMike Hommey2012-03-261-1/+9
|
* Use __sync_add_and_fetch and __sync_sub_and_fetch when they are availableMike Hommey2012-03-263-3/+65
| | | | | | | These functions may be available as inlines or as libgcc functions. In the former case, a __GCC_HAVE_SYNC_COMPARE_AND_SWAP_n macro is defined. But we still want to use these functions in the latter case, when we don't have our own implementation.
* Remove malloc_mutex_trylock().Jason Evans2012-03-251-15/+0
| | | | Remove malloc_mutex_trylock(); it has not been used for quite some time.
* Port to FreeBSD.Jason Evans2012-02-0313-47/+237
| | | | | | | | | | | | | | | | | | | | | | | | Use FreeBSD-specific functions (_pthread_mutex_init_calloc_cb(), _malloc_{pre,post}fork()) to avoid bootstrapping issues due to allocation in libc and libthr. Add malloc_strtoumax() and use it instead of strtoul(). Disable validation code in malloc_vsnprintf() and malloc_strtoumax() until jemalloc is initialized. This is necessary because locale initialization causes allocation for both vsnprintf() and strtoumax(). Force the lazy-lock feature on in order to avoid pthread_self(), because it causes allocation. Use syscall(SYS_write, ...) rather than write(...), because libthr wraps write() and causes allocation. Without this workaround, it would not be possible to print error messages in malloc_conf_init() without substantially reworking bootstrapping. Fix choose_arena_hard() to look at how many threads are assigned to the candidate choice, rather than checking whether the arena is uninitialized. This bug potentially caused more arenas to be initialized than necessary.
* Remove ephemeral mutexes.Jason Evans2012-03-246-41/+87
| | | | | | | | | | | Remove ephemeral mutexes from the prof machinery, and remove malloc_mutex_destroy(). This simplifies mutex management on systems that call malloc()/free() inside pthread_mutex_{create,destroy}(). Add atomic_*_u() for operation on unsigned values. Fix prof_printf() to call malloc_vsnprintf() rather than malloc_snprintf().
* Forcibly disable TLS on OS X.Jason Evans2012-03-231-1/+5
| | | | | | | Forcibly disable TLS on OS X. gcc and llvm-gcc on OS X do not support TLS, but clang does. Unfortunately, the implementation calls malloc() internally during TLS initialization, which causes an unresolvable bootstrapping issue.
* Remove -no-cpp-precomp compiler flag for OS X.Jason Evans2012-03-231-1/+1
| | | | | Remove the -no-cpp-precomp compiler flag when compiling on OS X. clang does not support the flag, and gcc works fine without it.
* Restructure atomic_*_z().Jason Evans2012-03-231-16/+29
| | | | | Restructure atomic_*_z() so that no casting within macros is necessary. This avoids warnings when compiling with clang.
* Add JEMALLOC_CC_SILENCE_INIT().Jason Evans2012-03-234-44/+23
| | | | | Add JEMALLOC_CC_SILENCE_INIT(), which provides succinct syntax for initializing a variable to avoid a spurious compiler warning.
* Implement tsd.Jason Evans2012-03-2319-362/+704
| | | | | | | | | | | | | Implement tsd, which is a TLS/TSD abstraction that uses one or both internally. Modify bootstrapping such that no tsd's are utilized until allocation is safe. Remove malloc_[v]tprintf(), and use malloc_snprintf() instead. Fix %p argument size handling in malloc_vsnprintf(). Fix a long-standing statistics-related bug in the "thread.arena" mallctl that could cause crashes due to linked list corruption.
* Improve zone support for OSXMike Hommey2012-03-203-207/+63
| | | | | | | I tested a build from 10.7 run on 10.7 and 10.6, and a build from 10.6 run on 10.6. The AC_COMPILE_IFELSE limbo is to avoid running a program during configure, which presumably makes it work when cross compiling for iOS.