- Apr 17, 2012
-
-
Jason Evans authored
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.
-
- Apr 16, 2012
-
-
Jason Evans authored
-
- Apr 14, 2012
-
-
Jason Evans authored
-
- Apr 13, 2012
-
-
Jason Evans authored
Add a configure test to determine whether common mmap()/munmap() patterns cause VM map holes, and only use munmap() to discard unused chunks if the problem does not exist. Unify the chunk caching for mmap and dss. Fix options processing to limit lg_chunk to be large enough that redzones will always fit.
-
Jason Evans authored
Always disable redzone by default, even when --enable-debug is specified. The memory overhead for redzones can be substantial, which makes this feature something that should only be opted into.
-
Jason Evans authored
-
- Apr 12, 2012
-
-
Mike Hommey authored
-
Mike Hommey authored
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.
-
Mike Hommey authored
Chunk_boot0 calls rtree_new, which calls base_alloc, which locks the base_mtx mutex. That mutex is initialized in base_boot.
-
Mike Hommey authored
-
Jason Evans authored
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 eae26903 (Add alignment support to chunk_alloc()).
-
- Apr 11, 2012
-
-
Jason Evans authored
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.
-
Jason Evans authored
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.
-
- Apr 10, 2012
-
-
Mike Hommey authored
-
Mike Hommey authored
It was only used by the swap feature, and that is gone.
-
Mike Hommey authored
In mingw, the test result may contain CRLF while the .exp files don't, or the other way around.
-
- Apr 06, 2012
-
-
Jason Evans authored
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.
-
Jason Evans authored
Remove arena_malloc_prechosen(), now that arena_malloc() can be invoked in a way that is semantically equivalent.
-
- Apr 05, 2012
-
-
Jason Evans authored
-
Jason Evans authored
Reported by Mike Hommey.
-
Jason Evans authored
-
Jason Evans authored
-
Jason Evans authored
This reverts commit 722b3703. 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.
-
- Apr 04, 2012
-
-
Jason Evans authored
The tls_model attribute isn't supporte by clang (yet?), so add a configure test that defines JEMALLOC_TLS_MODEL appropriately.
-
Jason Evans authored
Add a0malloc(), a0calloc(), and a0free(), which are used by FreeBSD's libc to allocate/deallocate TLS in static binaries.
-
Jason Evans authored
Postpone mutex initialization on FreeBSD until after base allocation is safe.
-
- Apr 03, 2012
-
-
Jason Evans authored
-
Jason Evans authored
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.
-
- Apr 02, 2012
-
-
Jason Evans authored
-
Jason Evans authored
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".
-
- Apr 03, 2012
-
-
Jason Evans authored
This reverts commit 96d4120a. 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.
-
- Apr 02, 2012
-
-
Jason Evans authored
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.
-
Mike Hommey authored
-
Jason Evans authored
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().
-
Jason Evans authored
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.
-
- Mar 30, 2012
-
-
Jason Evans authored
-
Jason Evans authored
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.
-
Mike Hommey authored
-
Mike Hommey authored
-
Mike Hommey authored
With the Android NDK, __sync_{add,sub}_and_fetch() compile fine for uint64_t, but the corresponding libgcc function aren't there.
-