diff options
author | Jason Evans <jasone@canonware.com> | 2016-02-19 18:40:03 -0800 |
---|---|---|
committer | Jason Evans <jasone@canonware.com> | 2016-02-19 20:32:32 -0800 |
commit | 578cd165812a11cd7250bfe5051cddc30ffec6e5 (patch) | |
tree | f04c73d0f5410087a80836e73b8e669a53a5b8af /src | |
parent | 34676d33690f6cc6885ff769e537ca940aacf886 (diff) | |
download | jemalloc-578cd165812a11cd7250bfe5051cddc30ffec6e5.tar.gz |
Refactor arena_malloc_hard() out of arena_malloc().
Diffstat (limited to 'src')
-rw-r--r-- | src/arena.c | 18 |
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, |