Rtree: take the base allocator as a parameter.
This facilitates better testing by avoiding mixing of the "real" base with the base used by the rtree under test.
This commit is contained in:
committed by
David Goldblatt
parent
7013716aaa
commit
a0c1f4ac57
@@ -86,7 +86,8 @@ metadata_thp_enabled(void) {
|
||||
}
|
||||
|
||||
base_t *b0get(void);
|
||||
base_t *base_new(tsdn_t *tsdn, unsigned ind, extent_hooks_t *extent_hooks);
|
||||
base_t *base_new(tsdn_t *tsdn, unsigned ind,
|
||||
const extent_hooks_t *extent_hooks);
|
||||
void base_delete(tsdn_t *tsdn, base_t *base);
|
||||
ehooks_t *base_ehooks_get(base_t *base);
|
||||
extent_hooks_t *base_extent_hooks_set(base_t *base,
|
||||
|
@@ -1,6 +1,7 @@
|
||||
#ifndef JEMALLOC_INTERNAL_EMAP_H
|
||||
#define JEMALLOC_INTERNAL_EMAP_H
|
||||
|
||||
#include "jemalloc/internal/base.h"
|
||||
#include "jemalloc/internal/mutex_pool.h"
|
||||
#include "jemalloc/internal/rtree.h"
|
||||
|
||||
@@ -27,7 +28,7 @@ struct emap_full_alloc_ctx_s {
|
||||
|
||||
extern emap_t emap_global;
|
||||
|
||||
bool emap_init(emap_t *emap, bool zeroed);
|
||||
bool emap_init(emap_t *emap, base_t *base, bool zeroed);
|
||||
|
||||
/*
|
||||
* Grab the lock or locks associated with the edata or edatas indicated (which
|
||||
|
@@ -78,6 +78,7 @@ struct rtree_level_s {
|
||||
|
||||
typedef struct rtree_s rtree_t;
|
||||
struct rtree_s {
|
||||
base_t *base;
|
||||
malloc_mutex_t init_lock;
|
||||
/* Number of elements based on rtree_levels[0].bits. */
|
||||
#if RTREE_HEIGHT > 1
|
||||
@@ -109,22 +110,8 @@ static const rtree_level_t rtree_levels[] = {
|
||||
#endif
|
||||
};
|
||||
|
||||
bool rtree_new(rtree_t *rtree, bool zeroed);
|
||||
bool rtree_new(rtree_t *rtree, base_t *base, bool zeroed);
|
||||
|
||||
typedef rtree_node_elm_t *(rtree_node_alloc_t)(tsdn_t *, rtree_t *, size_t);
|
||||
extern rtree_node_alloc_t *JET_MUTABLE rtree_node_alloc;
|
||||
|
||||
typedef rtree_leaf_elm_t *(rtree_leaf_alloc_t)(tsdn_t *, rtree_t *, size_t);
|
||||
extern rtree_leaf_alloc_t *JET_MUTABLE rtree_leaf_alloc;
|
||||
|
||||
typedef void (rtree_node_dalloc_t)(tsdn_t *, rtree_t *, rtree_node_elm_t *);
|
||||
extern rtree_node_dalloc_t *JET_MUTABLE rtree_node_dalloc;
|
||||
|
||||
typedef void (rtree_leaf_dalloc_t)(tsdn_t *, rtree_t *, rtree_leaf_elm_t *);
|
||||
extern rtree_leaf_dalloc_t *JET_MUTABLE rtree_leaf_dalloc;
|
||||
#ifdef JEMALLOC_JET
|
||||
void rtree_delete(tsdn_t *tsdn, rtree_t *rtree);
|
||||
#endif
|
||||
rtree_leaf_elm_t *rtree_leaf_elm_lookup_hard(tsdn_t *tsdn, rtree_t *rtree,
|
||||
rtree_ctx_t *rtree_ctx, uintptr_t key, bool dependent, bool init_missing);
|
||||
|
||||
|
Reference in New Issue
Block a user