mirror of
https://github.com/microsoft/mimalloc.git
synced 2025-07-01 17:24:38 +03:00
Merge branch 'dev' into dev2
This commit is contained in:
commit
84c9cddb70
2 changed files with 8 additions and 7 deletions
|
@ -867,8 +867,10 @@ static inline mi_memid_t _mi_memid_none(void) {
|
||||||
return _mi_memid_create(MI_MEM_NONE);
|
return _mi_memid_create(MI_MEM_NONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline mi_memid_t _mi_memid_create_os(bool committed, bool is_zero, bool is_large) {
|
static inline mi_memid_t _mi_memid_create_os(void* base, size_t size, bool committed, bool is_zero, bool is_large) {
|
||||||
mi_memid_t memid = _mi_memid_create(MI_MEM_OS);
|
mi_memid_t memid = _mi_memid_create(MI_MEM_OS);
|
||||||
|
memid.mem.os.base = base;
|
||||||
|
memid.mem.os.size = size;
|
||||||
memid.initially_committed = committed;
|
memid.initially_committed = committed;
|
||||||
memid.initially_zero = is_zero;
|
memid.initially_zero = is_zero;
|
||||||
memid.is_pinned = is_large;
|
memid.is_pinned = is_large;
|
||||||
|
|
11
src/os.c
11
src/os.c
|
@ -324,7 +324,7 @@ void* _mi_os_alloc(size_t size, mi_memid_t* memid) {
|
||||||
bool os_is_zero = false;
|
bool os_is_zero = false;
|
||||||
void* p = mi_os_prim_alloc(size, 0, true, false, &os_is_large, &os_is_zero);
|
void* p = mi_os_prim_alloc(size, 0, true, false, &os_is_large, &os_is_zero);
|
||||||
if (p != NULL) {
|
if (p != NULL) {
|
||||||
*memid = _mi_memid_create_os(true, os_is_zero, os_is_large);
|
*memid = _mi_memid_create_os(p, size, true, os_is_zero, os_is_large);
|
||||||
}
|
}
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
@ -342,10 +342,9 @@ void* _mi_os_alloc_aligned(size_t size, size_t alignment, bool commit, bool allo
|
||||||
void* os_base = NULL;
|
void* os_base = NULL;
|
||||||
void* p = mi_os_prim_alloc_aligned(size, alignment, commit, allow_large, &os_is_large, &os_is_zero, &os_base );
|
void* p = mi_os_prim_alloc_aligned(size, alignment, commit, allow_large, &os_is_large, &os_is_zero, &os_base );
|
||||||
if (p != NULL) {
|
if (p != NULL) {
|
||||||
*memid = _mi_memid_create_os(commit, os_is_zero, os_is_large);
|
*memid = _mi_memid_create_os(p, size, commit, os_is_zero, os_is_large);
|
||||||
memid->mem.os.base = os_base;
|
memid->mem.os.base = os_base;
|
||||||
// memid->mem.os.alignment = alignment;
|
memid->mem.os.size += ((uint8_t*)p - (uint8_t*)os_base); // todo: return from prim_alloc_aligned?
|
||||||
memid->mem.os.size += ((uint8_t*)p - (uint8_t*)os_base); // todo: return from prim_alloc_aligned
|
|
||||||
}
|
}
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
@ -602,7 +601,7 @@ void* _mi_os_alloc_huge_os_pages(size_t pages, int numa_node, mi_msecs_t max_mse
|
||||||
if (psize != NULL) *psize = 0;
|
if (psize != NULL) *psize = 0;
|
||||||
if (pages_reserved != NULL) *pages_reserved = 0;
|
if (pages_reserved != NULL) *pages_reserved = 0;
|
||||||
size_t size = 0;
|
size_t size = 0;
|
||||||
uint8_t* start = mi_os_claim_huge_pages(pages, &size);
|
uint8_t* const start = mi_os_claim_huge_pages(pages, &size);
|
||||||
if (start == NULL) return NULL; // or 32-bit systems
|
if (start == NULL) return NULL; // or 32-bit systems
|
||||||
|
|
||||||
// Allocate one page at the time but try to place them contiguously
|
// Allocate one page at the time but try to place them contiguously
|
||||||
|
@ -658,7 +657,7 @@ void* _mi_os_alloc_huge_os_pages(size_t pages, int numa_node, mi_msecs_t max_mse
|
||||||
if (psize != NULL) { *psize = page * MI_HUGE_OS_PAGE_SIZE; }
|
if (psize != NULL) { *psize = page * MI_HUGE_OS_PAGE_SIZE; }
|
||||||
if (page != 0) {
|
if (page != 0) {
|
||||||
mi_assert(start != NULL);
|
mi_assert(start != NULL);
|
||||||
*memid = _mi_memid_create_os(true /* is committed */, all_zero, true /* is_large */);
|
*memid = _mi_memid_create_os(start, size, true /* is committed */, all_zero, true /* is_large */);
|
||||||
memid->memkind = MI_MEM_OS_HUGE;
|
memid->memkind = MI_MEM_OS_HUGE;
|
||||||
mi_assert(memid->is_pinned);
|
mi_assert(memid->is_pinned);
|
||||||
#ifdef MI_TRACK_ASAN
|
#ifdef MI_TRACK_ASAN
|
||||||
|
|
Loading…
Add table
Reference in a new issue