summaryrefslogtreecommitdiffstats
path: root/src/arena.c
diff options
context:
space:
mode:
authorJason Evans <jasone@canonware.com>2017-01-07 02:56:02 (GMT)
committerJason Evans <jasone@canonware.com>2017-01-07 02:58:45 (GMT)
commit363629df88fc9d32cd4efbcc3c1a3eef1bbfe525 (patch)
treeadd980af4d9c09fa2b262a11244dffbfc9cfb081 /src/arena.c
parent5c5ff8d121e1f8389d18dfe22912739b99e893a8 (diff)
downloadjemalloc-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.c24
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++;