summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Fast-path improvement: reduce # of branches and unnecessary operations.Qi Wang2015-11-1011-211/+354
| | | | | | - Combine multiple runtime branches into a single malloc_slow check. - Avoid calling arena_choose / size2index / index2size on fast path. - A few micro optimizations.
* Add test for tree destructionJoshua Kahn2015-11-091-1/+16
|
* Add function to destroy treeJoshua Kahn2015-11-091-1/+40
| | | | | | | ex_destroy iterates over the tree using post-order traversal so nodes can be removed and processed by the callback function without paying the cost to rebalance the tree. The destruction process cannot be stopped once started.
* Allow const keys for lookupJoshua Kahn2015-11-095-17/+18
| | | | | | Signed-off-by: Steve Dougherty <sdougherty@barracuda.com> This resolves #281.
* Assert compact color bit is unusedSteve Dougherty2015-11-091-1/+10
| | | | | | Signed-off-by: Joshua Kahn <jkahn@barracuda.com> This resolves #280.
* Remove arena_run_dalloc_decommit().Mike Hommey2015-11-091-23/+2
| | | | This resolves #284.
* use correct macro definitions for clang-clNathan Froyd2015-11-091-26/+26
| | | | | | | | | | clang-cl, an MSVC-compatible frontend built on top of clang, defined _MSC_VER *and* supports __attribute__ syntax. The ordering of the checks in jemalloc_macros.h.in, however, do the wrong thing for clang-cl, as we want the Windows-specific macro definitions for clang-cl. To support this use case, we reorder the checks so that _MSC_VER is checked first (which includes clang-cl), and then JEMALLOC_HAVE_ATTR) is checked. No functionality change intended.
* Integrate raw heap profile support into jeprof.Jason Evans2015-11-091-11/+43
|
* Merge branch 'dev'4.0.4Jason Evans2015-10-245-48/+92
|\
| * Update ChangeLog for 4.0.4.Jason Evans2015-10-241-1/+6
| |
| * Fix a manual editing error.Jason Evans2015-10-191-2/+2
| |
| * Fix intermittent xallocx() test failures.Jason Evans2015-10-011-43/+65
| | | | | | | | | | | | | | | | Modify xallocx() tests that expect to expand in place to use a separate arena. This avoids the potential for interposed internal allocations from e.g. heap profile sampling to disrupt the tests. This resolves #286.
| * Fix a xallocx(..., MALLOCX_ZERO) bug.Jason Evans2015-09-253-3/+20
|/ | | | | | | | Fix xallocx(..., MALLOCX_ZERO to zero the last full trailing page of large allocations that have been randomly assigned an offset of 0 when --enable-cache-oblivious configure option is enabled. This addresses a special case missed in d260f442ce693de4351229027b37b3293fcbfd7d (Fix xallocx(..., MALLOCX_ZERO) bugs.).
* Merge branch 'dev'4.0.3Jason Evans2015-09-257-23/+183
|\
| * Update ChangeLog for 4.0.3.Jason Evans2015-09-251-1/+3
| |
| * Remove fragile xallocx() test case.Jason Evans2015-09-251-9/+0
| | | | | | | | | | In addition to depending on map coalescing, the test depended on munmap() being disabled so that chunk recycling would always succeed.
| * Work around an NPTL-specific TSD issue.Jason Evans2015-09-242-0/+5
| | | | | | | | | | | | | | Work around a potentially bad thread-specific data initialization interaction with NPTL (glibc's pthreads implementation). This resolves #283.
| * Make mallocx() OOM test more robust.Jason Evans2015-09-241-3/+14
| | | | | | | | | | | | Make mallocx() OOM testing work correctly even on systems that can allocate the majority of virtual address space in a single contiguous region.
| * Fix xallocx(..., MALLOCX_ZERO) bugs.Jason Evans2015-09-244-15/+148
| | | | | | | | | | | | | | | | | | | | Zero all trailing bytes of large allocations when --enable-cache-oblivious configure option is enabled. This regression was introduced by 8a03cf039cd06f9fa6972711195055d865673966 (Implement cache index randomization for large allocations.). Zero trailing bytes of huge allocations when resizing from/to a size class that is not a multiple of the chunk size.
| * Fix prof_tctx_dump_iter() to filter.Jason Evans2015-09-222-5/+23
|/ | | | | | | Fix prof_tctx_dump_iter() to filter out nodes that were created after heap profile dumping started. Prior to this fix, spurious entries with arbitrary object/byte counts could appear in heap profiles, which resulted in jeprof inaccuracies or failures.
* Merge branch 'dev'4.0.2Jason Evans2015-09-217-54/+114
|\
| * Update ChangeLog for 4.0.2.Jason Evans2015-09-211-1/+3
| |
| * Fix tsd_boot1() to use explicit 'void' parameter list.Craig Rodrigues2015-09-211-4/+4
| |
| * Make arena_dalloc_large_locked_impl() static.Jason Evans2015-09-201-1/+1
| |
| * Add mallocx() OOM tests.Jason Evans2015-09-172-0/+72
| |
| * Expand check_integration_prof testing.Jason Evans2015-09-171-0/+1
| | | | | | | | | | Run integration tests with MALLOC_CONF="prof:true,prof_active:false" in addition to MALLOC_CONF="prof:true".
| * Fix prof_alloc_rollback().Jason Evans2015-09-172-1/+3
| | | | | | | | | | Fix prof_alloc_rollback() to read tdata from thread-specific data rather than dereferencing a potentially invalid tctx.
| * Simplify imallocx_prof_sample().Jason Evans2015-09-171-26/+13
| | | | | | | | | | | | | | Simplify imallocx_prof_sample() to always operate on usize rather than sometimes using size. This avoids redundant usize computations and more closely fits the style adopted by i[rx]allocx_prof_sample() to fix sampling bugs.
| * Fix irallocx_prof_sample().Jason Evans2015-09-172-5/+7
| | | | | | | | | | Fix irallocx_prof_sample() to always allocate large regions, even when alignment is non-zero.
| * Fix ixallocx_prof_sample().Jason Evans2015-09-172-17/+11
|/ | | | | | Fix ixallocx_prof_sample() to never modify nor create sampled small allocations. xallocx() is in general incapable of moving small allocations, so this fix removes buggy code without loss of generality.
* Merge branch 'dev'4.0.1Jason Evans2015-09-1527-428/+1008
|\
| * Update ChangeLog for 4.0.1.Jason Evans2015-09-151-24/+47
| |
| * Loosen expected xallocx() results.Jason Evans2015-09-151-9/+9
| | | | | | | | | | Systems that do not support chunk split/merge cannot shrink/grow huge allocations in place.
| * Link test to librt if it contains clock_gettime(2).Jason Evans2015-09-152-3/+13
| | | | | | | | This resolves #257.
| * Centralize xallocx() size[+extra] overflow checks.Jason Evans2015-09-152-14/+11
| |
| * Add more xallocx() overflow tests.Jason Evans2015-09-151-0/+64
| |
| * Reduce variable scope.Dmitry-Me2015-09-153-9/+9
| | | | | | | | This resolves #274.
| * Address portability issues on Solaris.Jason Evans2015-09-152-2/+3
| | | | | | | | | | | | | | | | Don't assume Bourne shell is in /bin/sh when running size_classes.sh . Consider __sparcv9 a synonym for __sparc64__ when defining LG_QUANTUM. This resolves #275.
| * Fix ixallocx_prof() to check for size greater than HUGE_MAXCLASS.Jason Evans2015-09-152-3/+6
| |
| * Don't run stress tests as part of check target.Jason Evans2015-09-151-1/+1
| | | | | | | | | | | | This change was intended as part of 8f57e3f1aeb86021b3d078b825bc8c42b2a9af6f (Remove check_stress from check target's dependencies.).
| * Resolve an unsupported special case in arena_prof_tctx_set().Jason Evans2015-09-156-6/+62
| | | | | | | | | | | | | | | | | | | | | | Add arena_prof_tctx_reset() and use it instead of arena_prof_tctx_set() when resetting the tctx pointer during reallocation, which happens whenever an originally sampled reallocated object is not sampled during reallocation. This regression was introduced by 594c759f37c301d0245dc2accf4d4aaf9d202819 (Optimize arena_prof_tctx_set().)
| * Fix prof_{malloc,free}_sample_object() call order in prof_realloc().Jason Evans2015-09-152-3/+11
| | | | | | | | | | | | Fix prof_realloc() to call prof_free_sampled_object() after calling prof_malloc_sample_object(). Prior to this fix, if tctx and old_tctx were the same, the tctx could have been prematurely destroyed.
| * Fix ixallocx_prof_sample() argument order reversal.Jason Evans2015-09-152-1/+3
| | | | | | | | | | Fix ixallocx_prof() to pass usize_max and zero to ixallocx_prof_sample() in the correct order.
| * s/max_usize/usize_max/gJason Evans2015-09-151-6/+6
| |
| * s/oldptr/old_ptr/gJason Evans2015-09-151-15/+15
| |
| * Make one call to prof_active_get_unlocked() per allocation event.Jason Evans2015-09-153-18/+33
| | | | | | | | | | | | | | Make one call to prof_active_get_unlocked() per allocation event, and use the result throughout the relevant functions that handle an allocation event. Also add a missing check in prof_realloc(). These fixes protect allocation events against concurrent prof_active changes.
| * Fix irealloc_prof() to prof_alloc_rollback() on OOM.Jason Evans2015-09-152-1/+4
| |
| * Optimize irallocx_prof() to optimistically update the sampler state.Jason Evans2015-09-151-3/+3
| |
| * Fix ixallocx_prof() size+extra overflow.Jason Evans2015-09-151-0/+3
| | | | | | | | | | Fix ixallocx_prof() to clamp the extra parameter if size+extra would overflow HUGE_MAXCLASS.
| * Remove check_stress from check target's dependencies.Jason Evans2015-09-121-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | Prior to this change the debug build/test command needed to look like: make all tests && make check_unit && make check_integration && \ make check_integration_prof This is now simply: make check Rename the check_stress target to stress.