From 34875aef71d0333700e694c7f80d209b88cf1599 Mon Sep 17 00:00:00 2001 From: daanx Date: Wed, 2 Apr 2025 10:17:29 -0700 Subject: [PATCH] fix build error on msvc/clang-cl in C mode (issue #1060) --- src/page-map.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/page-map.c b/src/page-map.c index 78e8ab8e..c286d87e 100644 --- a/src/page-map.c +++ b/src/page-map.c @@ -9,7 +9,7 @@ terms of the MIT license. A copy of the license can be found in the file #include "mimalloc/internal.h" #include "bitmap.h" -#if MI_PAGE_MAP_FLAT +#if MI_PAGE_MAP_FLAT // The page-map contains a byte for each 64kb slice in the address space. // For an address `a` where `ofs = _mi_page_map[a >> 16]`: @@ -80,12 +80,12 @@ static void mi_page_map_ensure_committed(size_t idx, size_t slice_count) { const size_t commit_idx_hi = (idx + slice_count - 1) / MI_PAGE_MAP_ENTRIES_PER_COMMIT_BIT; for (size_t i = commit_idx; i <= commit_idx_hi; i++) { // per bit to avoid crossing over bitmap chunks if (mi_bitmap_is_clear(mi_page_map_commit, i)) { - // this may race, in which case we do multiple commits (which is ok) + // this may race, in which case we do multiple commits (which is ok) bool is_zero; uint8_t* const start = _mi_page_map + (i * MI_PAGE_MAP_ENTRIES_PER_COMMIT_BIT); const size_t size = MI_PAGE_MAP_ENTRIES_PER_COMMIT_BIT; _mi_os_commit(start, size, &is_zero); - if (!is_zero && !mi_page_map_memid.initially_zero) { _mi_memzero(start, size); } + if (!is_zero && !mi_page_map_memid.initially_zero) { _mi_memzero(start, size); } mi_bitmap_set(mi_page_map_commit, i); } } @@ -166,7 +166,7 @@ mi_decl_cache_align mi_page_t*** _mi_page_map; static void* mi_page_map_max_address; static mi_memid_t mi_page_map_memid; -static _Atomic(mi_bfield_t) mi_page_map_commit; +static _Atomic(mi_bfield_t) mi_page_map_commit; static mi_page_t** mi_page_map_ensure_committed(size_t idx); static mi_page_t** mi_page_map_ensure_at(size_t idx); @@ -189,8 +189,8 @@ bool _mi_page_map_init(void) { const size_t os_page_size = _mi_os_page_size(); const size_t page_map_size = _mi_align_up( page_map_count * sizeof(mi_page_t**), os_page_size); const size_t reserve_size = page_map_size + os_page_size; - const bool commit = page_map_size <= 64*MI_KiB || - mi_option_is_enabled(mi_option_pagemap_commit) || _mi_os_has_overcommit(); + const bool commit = page_map_size <= 64*MI_KiB || + mi_option_is_enabled(mi_option_pagemap_commit) || _mi_os_has_overcommit(); _mi_page_map = (mi_page_t***)_mi_os_alloc_aligned(reserve_size, 1, commit, true /* allow large */, &mi_page_map_memid); if (_mi_page_map==NULL) { _mi_error_message(ENOMEM, "unable to reserve virtual memory for the page map (%zu KiB)\n", page_map_size / MI_KiB); @@ -219,7 +219,7 @@ bool _mi_page_map_init(void) { 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; + const size_t bit_idx = idx/MI_PAGE_MAP_ENTRIES_PER_CBIT; mi_assert_internal(bit_idx < MI_BFIELD_BITS); if (pbit_idx != NULL) { *pbit_idx = bit_idx; } return ((commit & (MI_ZU(1) << bit_idx)) != 0); @@ -242,7 +242,7 @@ static mi_page_t** mi_page_map_ensure_at(size_t idx) { mi_memid_t memid; sub = (mi_page_t**)_mi_os_alloc(MI_PAGE_MAP_SUB_COUNT * sizeof(mi_page_t*), &memid); mi_page_t** expect = NULL; - if (!mi_atomic_cas_strong_acq_rel(((_Atomic(mi_page_t**)*)&_mi_page_map[idx]), &expect, sub)) { + if (!mi_atomic_cas_ptr_strong_acq_rel(mi_page_t*, ((_Atomic(mi_page_t**)*)&_mi_page_map[idx]), &expect, sub)) { // another thread already allocated it.. free and continue _mi_os_free(sub, MI_PAGE_MAP_SUB_COUNT * sizeof(mi_page_t*), memid); sub = expect; @@ -262,11 +262,11 @@ static void mi_page_map_set_range(mi_page_t* page, size_t idx, size_t sub_idx, s // set the offsets for the page while (sub_idx < MI_PAGE_MAP_SUB_COUNT) { sub[sub_idx] = page; - slice_count--; if (slice_count == 0) return; - sub_idx++; + slice_count--; if (slice_count == 0) return; + sub_idx++; } idx++; // potentially wrap around to the next idx - sub_idx = 0; + sub_idx = 0; } }