aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJason Evans <jasone@canonware.com>2016-02-19 18:40:03 -0800
committerJason Evans <jasone@canonware.com>2016-02-19 20:32:32 -0800
commit578cd165812a11cd7250bfe5051cddc30ffec6e5 (patch)
treef04c73d0f5410087a80836e73b8e669a53a5b8af /src
parent34676d33690f6cc6885ff769e537ca940aacf886 (diff)
downloadjemalloc-578cd165812a11cd7250bfe5051cddc30ffec6e5.tar.gz
Refactor arena_malloc_hard() out of arena_malloc().
Diffstat (limited to 'src')
-rw-r--r--src/arena.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/arena.c b/src/arena.c
index aa787f9..b452df6 100644
--- a/src/arena.c
+++ b/src/arena.c
@@ -2123,7 +2123,7 @@ arena_quarantine_junk_small(void *ptr, size_t usize)
arena_redzones_validate(ptr, bin_info, true);
}
-void *
+static void *
arena_malloc_small(arena_t *arena, size_t size, szind_t binind, bool zero)
{
void *ret;
@@ -2236,6 +2236,22 @@ arena_malloc_large(arena_t *arena, size_t size, szind_t binind, bool zero)
return (ret);
}
+void *
+arena_malloc_hard(tsd_t *tsd, arena_t *arena, size_t size, szind_t ind,
+ bool zero, tcache_t *tcache)
+{
+
+ arena = arena_choose(tsd, arena);
+ if (unlikely(arena == NULL))
+ return (NULL);
+
+ if (likely(size <= SMALL_MAXCLASS))
+ return (arena_malloc_small(arena, size, ind, zero));
+ if (likely(size <= large_maxclass))
+ return (arena_malloc_large(arena, size, ind, zero));
+ return (huge_malloc(tsd, arena, size, zero, tcache));
+}
+
/* Only handles large allocations that require more than page alignment. */
static void *
arena_palloc_large(tsd_t *tsd, arena_t *arena, size_t usize, size_t alignment,