mirror of
https://github.com/microsoft/mimalloc.git
synced 2025-07-02 01:34:38 +03:00
small fixes
This commit is contained in:
parent
a42a2a926b
commit
c5cfc92f0c
3 changed files with 4 additions and 2 deletions
|
@ -107,6 +107,7 @@ typedef int32_t mi_ssize_t;
|
||||||
// Define big endian if needed
|
// Define big endian if needed
|
||||||
// #define MI_BIG_ENDIAN 1
|
// #define MI_BIG_ENDIAN 1
|
||||||
|
|
||||||
|
// maximum virtual address bits in a user-space pointer
|
||||||
#if MI_DEFAULT_VIRTUAL_ADDRESS_BITS > 0
|
#if MI_DEFAULT_VIRTUAL_ADDRESS_BITS > 0
|
||||||
#define MI_MAX_VABITS MI_DEFAULT_VIRTUAL_ADDRESS_BITS
|
#define MI_MAX_VABITS MI_DEFAULT_VIRTUAL_ADDRESS_BITS
|
||||||
#elif MI_ARCH_X64
|
#elif MI_ARCH_X64
|
||||||
|
@ -117,6 +118,7 @@ typedef int32_t mi_ssize_t;
|
||||||
#define MI_MAX_VABITS (32)
|
#define MI_MAX_VABITS (32)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// use a flat page-map (or a 2-level one)
|
||||||
#ifndef MI_PAGE_MAP_FLAT
|
#ifndef MI_PAGE_MAP_FLAT
|
||||||
#if MI_MAX_VABITS <= 40
|
#if MI_MAX_VABITS <= 40
|
||||||
#define MI_PAGE_MAP_FLAT 1
|
#define MI_PAGE_MAP_FLAT 1
|
||||||
|
|
|
@ -25,7 +25,7 @@ terms of the MIT license. A copy of the license can be found in the file
|
||||||
#define MI_META_PAGE_SIZE MI_ARENA_SLICE_SIZE
|
#define MI_META_PAGE_SIZE MI_ARENA_SLICE_SIZE
|
||||||
#define MI_META_PAGE_ALIGN MI_ARENA_SLICE_ALIGN
|
#define MI_META_PAGE_ALIGN MI_ARENA_SLICE_ALIGN
|
||||||
|
|
||||||
#define MI_META_BLOCK_SIZE (64)
|
#define MI_META_BLOCK_SIZE (128) // large enough such that META_MAX_SIZE > 4k (even on 32-bit)
|
||||||
#define MI_META_BLOCK_ALIGN MI_META_BLOCK_SIZE
|
#define MI_META_BLOCK_ALIGN MI_META_BLOCK_SIZE
|
||||||
#define MI_META_BLOCKS_PER_PAGE (MI_ARENA_SLICE_SIZE / MI_META_BLOCK_SIZE) // 1024
|
#define MI_META_BLOCKS_PER_PAGE (MI_ARENA_SLICE_SIZE / MI_META_BLOCK_SIZE) // 1024
|
||||||
#define MI_META_MAX_SIZE (MI_BCHUNK_SIZE * MI_META_BLOCK_SIZE)
|
#define MI_META_MAX_SIZE (MI_BCHUNK_SIZE * MI_META_BLOCK_SIZE)
|
||||||
|
|
|
@ -147,7 +147,7 @@ void _mi_page_map_unregister_range(void* start, size_t size) {
|
||||||
mi_page_t* _mi_safe_ptr_page(const void* p) {
|
mi_page_t* _mi_safe_ptr_page(const void* p) {
|
||||||
if mi_unlikely(p >= mi_page_map_max_address) return NULL;
|
if mi_unlikely(p >= mi_page_map_max_address) return NULL;
|
||||||
const uintptr_t idx = _mi_page_map_index(p);
|
const uintptr_t idx = _mi_page_map_index(p);
|
||||||
if mi_unlikely(mi_page_map_commit == NULL || !mi_bitmap_is_set(mi_page_map_commit, idx/MI_PAGE_MAP_ENTRIES_PER_COMMIT_BIT)) return NULL;
|
if mi_unlikely(mi_page_map_commit != NULL && !mi_bitmap_is_set(mi_page_map_commit, idx/MI_PAGE_MAP_ENTRIES_PER_COMMIT_BIT)) return NULL;
|
||||||
const uintptr_t ofs = _mi_page_map[idx];
|
const uintptr_t ofs = _mi_page_map[idx];
|
||||||
if mi_unlikely(ofs == 0) return NULL;
|
if mi_unlikely(ofs == 0) return NULL;
|
||||||
return (mi_page_t*)((((uintptr_t)p >> MI_ARENA_SLICE_SHIFT) - ofs + 1) << MI_ARENA_SLICE_SHIFT);
|
return (mi_page_t*)((((uintptr_t)p >> MI_ARENA_SLICE_SHIFT) - ofs + 1) << MI_ARENA_SLICE_SHIFT);
|
||||||
|
|
Loading…
Add table
Reference in a new issue