From 98140490a96adbe6cf5933b3da674f2bcccc94d5 Mon Sep 17 00:00:00 2001 From: Daan Date: Wed, 18 Jun 2025 01:34:56 -0700 Subject: [PATCH 1/2] remove unneeded forward declarations --- src/page-map.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/page-map.c b/src/page-map.c index 08ded252..65320326 100644 --- a/src/page-map.c +++ b/src/page-map.c @@ -203,11 +203,7 @@ static mi_memid_t mi_page_map_memid; // divide the main map in 64 (`MI_BFIELD_BITS`) parts commit those parts on demand static _Atomic(mi_bfield_t) mi_page_map_commit; -mi_decl_nodiscard static bool mi_page_map_ensure_committed(size_t idx, mi_submap_t* submap); -mi_decl_nodiscard static bool mi_page_map_ensure_submap_at(size_t idx, mi_submap_t* submap); -static bool mi_page_map_set_range(mi_page_t* page, size_t idx, size_t sub_idx, size_t slice_count); - -static inline bool mi_page_map_is_committed(size_t idx, size_t* pbit_idx) { +mi_decl_nodiscard static inline bool mi_page_map_is_committed(size_t idx, size_t* pbit_idx) { mi_bfield_t commit = mi_atomic_load_relaxed(&mi_page_map_commit); const size_t bit_idx = idx/MI_PAGE_MAP_ENTRIES_PER_CBIT; mi_assert_internal(bit_idx < MI_BFIELD_BITS); @@ -215,7 +211,7 @@ static inline bool mi_page_map_is_committed(size_t idx, size_t* pbit_idx) { return ((commit & (MI_ZU(1) << bit_idx)) != 0); } -static bool mi_page_map_ensure_committed(size_t idx, mi_submap_t* submap) { +mi_decl_nodiscard static bool mi_page_map_ensure_committed(size_t idx, mi_submap_t* submap) { mi_assert_internal(submap!=NULL && *submap==NULL); size_t bit_idx; if mi_unlikely(!mi_page_map_is_committed(idx, &bit_idx)) { @@ -313,7 +309,7 @@ void _mi_page_map_unsafe_destroy(mi_subproc_t* subproc) { } -static bool mi_page_map_ensure_submap_at(size_t idx, mi_submap_t* submap) { +mi_decl_nodiscard static bool mi_page_map_ensure_submap_at(size_t idx, mi_submap_t* submap) { mi_assert_internal(submap!=NULL && *submap==NULL); mi_submap_t sub = NULL; if (!mi_page_map_ensure_committed(idx, &sub)) { From 639b73ecf9608d9c3078cb9dee5b7c2f46639828 Mon Sep 17 00:00:00 2001 From: Daan Date: Wed, 18 Jun 2025 01:37:16 -0700 Subject: [PATCH 2/2] refactor --- src/page-map.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/page-map.c b/src/page-map.c index 65320326..40493389 100644 --- a/src/page-map.c +++ b/src/page-map.c @@ -318,13 +318,13 @@ mi_decl_nodiscard static bool mi_page_map_ensure_submap_at(size_t idx, mi_submap if mi_unlikely(sub == NULL) { // sub map not yet allocated, alloc now mi_memid_t memid; - mi_page_t** expect = sub; const size_t submap_size = MI_PAGE_MAP_SUB_SIZE; sub = (mi_submap_t)_mi_os_zalloc(submap_size, &memid); if (sub==NULL) { _mi_warning_message("internal error: unable to extend the page map\n"); return false; } + mi_submap_t expect = NULL; if (!mi_atomic_cas_ptr_strong_acq_rel(mi_page_t*, &_mi_page_map[idx], &expect, sub)) { // another thread already allocated it.. free and continue _mi_os_free(sub, submap_size, memid);