diff options
author | Jason Evans <jasone@canonware.com> | 2017-01-07 02:56:02 (GMT) |
---|---|---|
committer | Jason Evans <jasone@canonware.com> | 2017-01-07 02:58:45 (GMT) |
commit | 363629df88fc9d32cd4efbcc3c1a3eef1bbfe525 (patch) | |
tree | add980af4d9c09fa2b262a11244dffbfc9cfb081 /src/arena.c | |
parent | 5c5ff8d121e1f8389d18dfe22912739b99e893a8 (diff) | |
download | jemalloc-363629df88fc9d32cd4efbcc3c1a3eef1bbfe525.zip jemalloc-363629df88fc9d32cd4efbcc3c1a3eef1bbfe525.tar.gz jemalloc-363629df88fc9d32cd4efbcc3c1a3eef1bbfe525.tar.bz2 |
Fix allocated_large stats with respect to sampled small allocations.
Diffstat (limited to 'src/arena.c')
-rw-r--r-- | src/arena.c | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/src/arena.c b/src/arena.c index 2c3cc5c..ec8d479 100644 --- a/src/arena.c +++ b/src/arena.c @@ -211,11 +211,15 @@ arena_nactive_sub(arena_t *arena, size_t sub_pages) static void arena_large_malloc_stats_update(arena_t *arena, size_t usize) { - szind_t index = size2index(usize); - szind_t hindex = (index >= NBINS) ? index - NBINS : 0; + szind_t index, hindex; cassert(config_stats); + if (usize < LARGE_MINCLASS) + usize = LARGE_MINCLASS; + index = size2index(usize); + hindex = (index >= NBINS) ? index - NBINS : 0; + arena->stats.nmalloc_large++; arena->stats.allocated_large += usize; arena->stats.lstats[hindex].nmalloc++; @@ -226,11 +230,15 @@ arena_large_malloc_stats_update(arena_t *arena, size_t usize) static void arena_large_malloc_stats_update_undo(arena_t *arena, size_t usize) { - szind_t index = size2index(usize); - szind_t hindex = (index >= NBINS) ? index - NBINS : 0; + szind_t index, hindex; cassert(config_stats); + if (usize < LARGE_MINCLASS) + usize = LARGE_MINCLASS; + index = size2index(usize); + hindex = (index >= NBINS) ? index - NBINS : 0; + arena->stats.nmalloc_large--; arena->stats.allocated_large -= usize; arena->stats.lstats[hindex].nmalloc--; @@ -241,11 +249,15 @@ arena_large_malloc_stats_update_undo(arena_t *arena, size_t usize) static void arena_large_dalloc_stats_update(arena_t *arena, size_t usize) { - szind_t index = size2index(usize); - szind_t hindex = (index >= NBINS) ? index - NBINS : 0; + szind_t index, hindex; cassert(config_stats); + if (usize < LARGE_MINCLASS) + usize = LARGE_MINCLASS; + index = size2index(usize); + hindex = (index >= NBINS) ? index - NBINS : 0; + arena->stats.ndalloc_large++; arena->stats.allocated_large -= usize; arena->stats.lstats[hindex].ndalloc++; |