diff options
Diffstat (limited to 'examples/redis-unstable/deps/jemalloc/src/san_bump.c')
| -rw-r--r-- | examples/redis-unstable/deps/jemalloc/src/san_bump.c | 104 |
1 files changed, 0 insertions, 104 deletions
diff --git a/examples/redis-unstable/deps/jemalloc/src/san_bump.c b/examples/redis-unstable/deps/jemalloc/src/san_bump.c deleted file mode 100644 index 8889745..0000000 --- a/examples/redis-unstable/deps/jemalloc/src/san_bump.c +++ /dev/null @@ -1,104 +0,0 @@ -#include "jemalloc/internal/jemalloc_preamble.h" -#include "jemalloc/internal/jemalloc_internal_includes.h" - -#include "jemalloc/internal/san_bump.h" -#include "jemalloc/internal/pac.h" -#include "jemalloc/internal/san.h" -#include "jemalloc/internal/ehooks.h" -#include "jemalloc/internal/edata_cache.h" - -static bool -san_bump_grow_locked(tsdn_t *tsdn, san_bump_alloc_t *sba, pac_t *pac, - ehooks_t *ehooks, size_t size); - -edata_t * -san_bump_alloc(tsdn_t *tsdn, san_bump_alloc_t* sba, pac_t *pac, - ehooks_t *ehooks, size_t size, bool zero) { - assert(san_bump_enabled()); - - edata_t* to_destroy; - size_t guarded_size = san_one_side_guarded_sz(size); - - malloc_mutex_lock(tsdn, &sba->mtx); - - if (sba->curr_reg == NULL || - edata_size_get(sba->curr_reg) < guarded_size) { - /* - * If the current region can't accommodate the allocation, - * try replacing it with a larger one and destroy current if the - * replacement succeeds. - */ - to_destroy = sba->curr_reg; - bool err = san_bump_grow_locked(tsdn, sba, pac, ehooks, - guarded_size); - if (err) { - goto label_err; - } - } else { - to_destroy = NULL; - } - assert(guarded_size <= edata_size_get(sba->curr_reg)); - size_t trail_size = edata_size_get(sba->curr_reg) - guarded_size; - - edata_t* edata; - if (trail_size != 0) { - edata_t* curr_reg_trail = extent_split_wrapper(tsdn, pac, - ehooks, sba->curr_reg, guarded_size, trail_size, - /* holding_core_locks */ true); - if (curr_reg_trail == NULL) { - goto label_err; - } - edata = sba->curr_reg; - sba->curr_reg = curr_reg_trail; - } else { - edata = sba->curr_reg; - sba->curr_reg = NULL; - } - - malloc_mutex_unlock(tsdn, &sba->mtx); - - assert(!edata_guarded_get(edata)); - assert(sba->curr_reg == NULL || !edata_guarded_get(sba->curr_reg)); - assert(to_destroy == NULL || !edata_guarded_get(to_destroy)); - - if (to_destroy != NULL) { - extent_destroy_wrapper(tsdn, pac, ehooks, to_destroy); - } - - san_guard_pages(tsdn, ehooks, edata, pac->emap, /* left */ false, - /* right */ true, /* remap */ true); - - if (extent_commit_zero(tsdn, ehooks, edata, /* commit */ true, zero, - /* growing_retained */ false)) { - extent_record(tsdn, pac, ehooks, &pac->ecache_retained, - edata); - return NULL; - } - - if (config_prof) { - extent_gdump_add(tsdn, edata); - } - - return edata; -label_err: - malloc_mutex_unlock(tsdn, &sba->mtx); - return NULL; -} - -static bool -san_bump_grow_locked(tsdn_t *tsdn, san_bump_alloc_t *sba, pac_t *pac, - ehooks_t *ehooks, size_t size) { - malloc_mutex_assert_owner(tsdn, &sba->mtx); - - bool committed = false, zeroed = false; - size_t alloc_size = size > SBA_RETAINED_ALLOC_SIZE ? size : - SBA_RETAINED_ALLOC_SIZE; - assert((alloc_size & PAGE_MASK) == 0); - sba->curr_reg = extent_alloc_wrapper(tsdn, pac, ehooks, NULL, - alloc_size, PAGE, zeroed, &committed, - /* growing_retained */ true); - if (sba->curr_reg == NULL) { - return true; - } - return false; -} |
