Refactor arena_malloc_hard() out of arena_malloc().

This commit is contained in:
Jason Evans
2016-02-19 18:40:03 -08:00
parent 34676d3369
commit 578cd16581
3 changed files with 25 additions and 17 deletions

View File

@@ -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,