Compare commits

..

2 commits

Author SHA1 Message Date
Daan
639b73ecf9 refactor 2025-06-18 01:37:16 -07:00
Daan
98140490a9 remove unneeded forward declarations 2025-06-18 01:34:56 -07:00

View file

@ -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)) {
@ -322,13 +318,13 @@ static bool mi_page_map_ensure_submap_at(size_t idx, mi_submap_t* 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);