diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/jemalloc/internal/extent_externs.h | 5 | ||||
-rw-r--r-- | include/jemalloc/internal/extent_inlines.h | 9 | ||||
-rw-r--r-- | include/jemalloc/internal/extent_structs.h | 7 | ||||
-rw-r--r-- | include/jemalloc/internal/private_symbols.txt | 2 |
4 files changed, 19 insertions, 4 deletions
diff --git a/include/jemalloc/internal/extent_externs.h b/include/jemalloc/internal/extent_externs.h index f5efed0..ef2467e 100644 --- a/include/jemalloc/internal/extent_externs.h +++ b/include/jemalloc/internal/extent_externs.h @@ -18,10 +18,11 @@ size_t extent_size_quantize_ceil(size_t size); ph_proto(, extent_heap_, extent_heap_t, extent_t) bool extents_init(tsdn_t *tsdn, extents_t *extents, extent_state_t state, - bool try_coalesce); + bool delay_coalesce); extent_state_t extents_state_get(const extents_t *extents); size_t extents_npages_get(extents_t *extents); -extent_t *extents_evict(tsdn_t *tsdn, extents_t *extents, size_t npages_min); +extent_t *extents_evict(tsdn_t *tsdn, arena_t *arena, + extent_hooks_t **r_extent_hooks, extents_t *extents, size_t npages_min); void extents_prefork(tsdn_t *tsdn, extents_t *extents); void extents_postfork_parent(tsdn_t *tsdn, extents_t *extents); void extents_postfork_child(tsdn_t *tsdn, extents_t *extents); diff --git a/include/jemalloc/internal/extent_inlines.h b/include/jemalloc/internal/extent_inlines.h index 473aad7..989c0d1 100644 --- a/include/jemalloc/internal/extent_inlines.h +++ b/include/jemalloc/internal/extent_inlines.h @@ -37,6 +37,8 @@ void extent_list_init(extent_list_t *list); extent_t *extent_list_first(const extent_list_t *list); extent_t *extent_list_last(const extent_list_t *list); void extent_list_append(extent_list_t *list, extent_t *extent); +void extent_list_replace(extent_list_t *list, extent_t *to_remove, + extent_t *to_insert); void extent_list_remove(extent_list_t *list, extent_t *extent); int extent_sn_comp(const extent_t *a, const extent_t *b); int extent_ad_comp(const extent_t *a, const extent_t *b); @@ -254,6 +256,13 @@ extent_list_append(extent_list_t *list, extent_t *extent) { } JEMALLOC_INLINE void +extent_list_replace(extent_list_t *list, extent_t *to_remove, + extent_t *to_insert) { + ql_after_insert(to_remove, to_insert, ql_link); + ql_remove(list, to_remove, ql_link); +} + +JEMALLOC_INLINE void extent_list_remove(extent_list_t *list, extent_t *extent) { ql_remove(list, extent, ql_link); } diff --git a/include/jemalloc/internal/extent_structs.h b/include/jemalloc/internal/extent_structs.h index 008b635..9ea6972 100644 --- a/include/jemalloc/internal/extent_structs.h +++ b/include/jemalloc/internal/extent_structs.h @@ -116,8 +116,11 @@ struct extents_s { /* All stored extents must be in the same state. */ extent_state_t state; - /* If true, try to coalesce during extent deallocation. */ - bool try_coalesce; + /* + * If true, delay coalescing until eviction; otherwise coalesce during + * deallocation. + */ + bool delay_coalesce; }; #endif /* JEMALLOC_INTERNAL_EXTENT_STRUCTS_H */ diff --git a/include/jemalloc/internal/private_symbols.txt b/include/jemalloc/internal/private_symbols.txt index b122dae..30cd395 100644 --- a/include/jemalloc/internal/private_symbols.txt +++ b/include/jemalloc/internal/private_symbols.txt @@ -159,8 +159,10 @@ extent_init extent_last_get extent_list_append extent_list_first +extent_list_init extent_list_last extent_list_remove +extent_list_replace extent_lookup extent_merge_wrapper extent_past_get |