From 3192d6b77dae3b4aa36b95eea793fcdea6f5ffbd Mon Sep 17 00:00:00 2001 From: David Goldblatt Date: Mon, 9 Mar 2020 12:20:06 -0700 Subject: [PATCH] Extents: Have extent_dalloc_gap take ehooks. We're almost to the point where the extent code doesn't know about arenas at all. In that world, we shouldn't pull them out of the arena. --- include/jemalloc/internal/extent.h | 3 ++- src/extent.c | 5 ++--- src/extent_dss.c | 5 ++++- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/include/jemalloc/internal/extent.h b/include/jemalloc/internal/extent.h index e615fb6e..bb01254c 100644 --- a/include/jemalloc/internal/extent.h +++ b/include/jemalloc/internal/extent.h @@ -33,7 +33,8 @@ edata_t *ecache_evict(tsdn_t *tsdn, arena_t *arena, ehooks_t *ehooks, edata_t *extent_alloc_wrapper(tsdn_t *tsdn, arena_t *arena, ehooks_t *ehooks, void *new_addr, size_t size, size_t alignment, bool slab, szind_t szind, bool *zero, bool *commit); -void extent_dalloc_gap(tsdn_t *tsdn, arena_t *arena, edata_t *edata); +void extent_dalloc_gap(tsdn_t *tsdn, arena_t *arena, ehooks_t *ehooks, + edata_t *edata); void extent_dalloc_wrapper(tsdn_t *tsdn, arena_t *arena, ehooks_t *ehooks, edata_t *edata); void extent_destroy_wrapper(tsdn_t *tsdn, arena_t *arena, ehooks_t *ehooks, diff --git a/src/extent.c b/src/extent.c index 8411e8aa..0162494e 100644 --- a/src/extent.c +++ b/src/extent.c @@ -1026,9 +1026,8 @@ extent_record(tsdn_t *tsdn, arena_t *arena, ehooks_t *ehooks, ecache_t *ecache, } void -extent_dalloc_gap(tsdn_t *tsdn, arena_t *arena, edata_t *edata) { - ehooks_t *ehooks = arena_get_ehooks(arena); - +extent_dalloc_gap(tsdn_t *tsdn, arena_t *arena, ehooks_t *ehooks, + edata_t *edata) { witness_assert_depth_to_rank(tsdn_witness_tsdp_get(tsdn), WITNESS_RANK_CORE, 0); diff --git a/src/extent_dss.c b/src/extent_dss.c index 7746a208..55f037ef 100644 --- a/src/extent_dss.c +++ b/src/extent_dss.c @@ -186,7 +186,10 @@ extent_alloc_dss(tsdn_t *tsdn, arena_t *arena, void *new_addr, size_t size, extent_dss_extending_finish(); if (gap_size_page != 0) { - extent_dalloc_gap(tsdn, arena, gap); + ehooks_t *ehooks = arena_get_ehooks( + arena); + extent_dalloc_gap(tsdn, arena, ehooks, + gap); } else { edata_cache_put(tsdn, &arena->pa_shard.edata_cache, gap);