Skip to content

Commit 9561ae4

Browse files
committed
rename segment_map_destroy to segment_map_unsafe_destroy
1 parent a046b6f commit 9561ae4

File tree

4 files changed

+7
-4
lines changed

4 files changed

+7
-4
lines changed

include/mimalloc/atomic.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ terms of the MIT license. A copy of the license can be found in the file
7272
#define mi_atomic_load_relaxed(p) mi_atomic(load_explicit)(p,mi_memory_order(relaxed))
7373
#define mi_atomic_store_release(p,x) mi_atomic(store_explicit)(p,x,mi_memory_order(release))
7474
#define mi_atomic_store_relaxed(p,x) mi_atomic(store_explicit)(p,x,mi_memory_order(relaxed))
75+
#define mi_atomic_exchange_relaxed(p,x) mi_atomic(exchange_explicit)(p,x,mi_memory_order(relaxed))
7576
#define mi_atomic_exchange_release(p,x) mi_atomic(exchange_explicit)(p,x,mi_memory_order(release))
7677
#define mi_atomic_exchange_acq_rel(p,x) mi_atomic(exchange_explicit)(p,x,mi_memory_order(acq_rel))
7778
#define mi_atomic_cas_weak_release(p,exp,des) mi_atomic_cas_weak(p,exp,des,mi_memory_order(release),mi_memory_order(relaxed))
@@ -110,6 +111,7 @@ static inline intptr_t mi_atomic_subi(_Atomic(intptr_t)*p, intptr_t sub);
110111
#define mi_atomic_cas_ptr_weak_release(tp,p,exp,des) mi_atomic_cas_weak_release(p,exp,(tp*)des)
111112
#define mi_atomic_cas_ptr_weak_acq_rel(tp,p,exp,des) mi_atomic_cas_weak_acq_rel(p,exp,(tp*)des)
112113
#define mi_atomic_cas_ptr_strong_release(tp,p,exp,des) mi_atomic_cas_strong_release(p,exp,(tp*)des)
114+
#define mi_atomic_exchange_ptr_relaxed(tp,p,x) mi_atomic_exchange_relaxed(p,(tp*)x)
113115
#define mi_atomic_exchange_ptr_release(tp,p,x) mi_atomic_exchange_release(p,(tp*)x)
114116
#define mi_atomic_exchange_ptr_acq_rel(tp,p,x) mi_atomic_exchange_acq_rel(p,(tp*)x)
115117
#else
@@ -118,6 +120,7 @@ static inline intptr_t mi_atomic_subi(_Atomic(intptr_t)*p, intptr_t sub);
118120
#define mi_atomic_cas_ptr_weak_release(tp,p,exp,des) mi_atomic_cas_weak_release(p,exp,des)
119121
#define mi_atomic_cas_ptr_weak_acq_rel(tp,p,exp,des) mi_atomic_cas_weak_acq_rel(p,exp,des)
120122
#define mi_atomic_cas_ptr_strong_release(tp,p,exp,des) mi_atomic_cas_strong_release(p,exp,des)
123+
#define mi_atomic_exchange_ptr_relaxed(tp,p,x) mi_atomic_exchange_relaxed(p,x)
121124
#define mi_atomic_exchange_ptr_release(tp,p,x) mi_atomic_exchange_release(p,x)
122125
#define mi_atomic_exchange_ptr_acq_rel(tp,p,x) mi_atomic_exchange_acq_rel(p,x)
123126
#endif

include/mimalloc/internal.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ void _mi_arena_field_cursor_done(mi_arena_field_cursor_t* current);
167167
// "segment-map.c"
168168
void _mi_segment_map_allocated_at(const mi_segment_t* segment);
169169
void _mi_segment_map_freed_at(const mi_segment_t* segment);
170-
void _mi_segment_map_destroy(void);
170+
void _mi_segment_map_unsafe_destroy(void);
171171

172172
// "segment.c"
173173
mi_page_t* _mi_segment_page_alloc(mi_heap_t* heap, size_t block_size, size_t page_alignment, mi_segments_tld_t* tld);

src/init.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -682,7 +682,7 @@ void mi_cdecl _mi_process_done(void) {
682682
mi_collect(true /* force */);
683683
_mi_heap_unsafe_destroy_all(); // forcefully release all memory held by all heaps (of this thread only!)
684684
_mi_arena_unsafe_destroy_all();
685-
_mi_segment_map_destroy();
685+
_mi_segment_map_unsafe_destroy();
686686
}
687687

688688
if (mi_option_is_enabled(mi_option_show_stats) || mi_option_is_enabled(mi_option_verbose)) {

src/segment-map.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,9 +126,9 @@ mi_decl_nodiscard mi_decl_export bool mi_is_in_heap_region(const void* p) mi_att
126126
return mi_is_valid_pointer(p);
127127
}
128128

129-
void _mi_segment_map_destroy(void) {
129+
void _mi_segment_map_unsafe_destroy(void) {
130130
for (size_t i = 0; i < MI_SEGMENT_MAP_MAX_PARTS; i++) {
131-
mi_segmap_part_t* part = mi_segment_map[i];
131+
mi_segmap_part_t* part = mi_atomic_exchange_ptr_relaxed(mi_segmap_part_t, &mi_segment_map[i], NULL);
132132
if (part != NULL) {
133133
_mi_os_free(part, sizeof(mi_segmap_part_t), part->memid);
134134
}

0 commit comments

Comments
 (0)