mirror of
https://github.com/microsoft/mimalloc.git
synced 2025-07-06 19:38:41 +03:00
track abandoned segments in an arena bitmap instead of with a list
This commit is contained in:
parent
7020ed5e52
commit
bdda13b880
4 changed files with 122 additions and 176 deletions
|
@ -124,6 +124,10 @@ bool _mi_arena_contains(const void* p);
|
|||
void _mi_arena_collect(bool force_purge, mi_stats_t* stats);
|
||||
void _mi_arena_unsafe_destroy_all(mi_stats_t* stats);
|
||||
|
||||
bool _mi_arena_segment_clear_abandoned(mi_memid_t memid);
|
||||
void _mi_arena_segment_mark_abandoned(mi_memid_t memid);
|
||||
mi_segment_t* _mi_arena_segment_clear_abandoned_next(mi_arena_id_t* current_id, size_t* current_idx);
|
||||
|
||||
// "segment-map.c"
|
||||
void _mi_segment_map_allocated_at(const mi_segment_t* segment);
|
||||
void _mi_segment_map_freed_at(const mi_segment_t* segment);
|
||||
|
|
|
@ -373,7 +373,6 @@ typedef struct mi_segment_s {
|
|||
size_t segment_size; // for huge pages this may be different from `MI_SEGMENT_SIZE`
|
||||
|
||||
// segment fields
|
||||
_Atomic(struct mi_segment_s*) abandoned_next;
|
||||
struct mi_segment_s* next; // must be the first segment field after abandoned_next -- see `segment.c:segment_init`
|
||||
struct mi_segment_s* prev;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue