mirror of
https://github.com/microsoft/mimalloc.git
synced 2025-05-05 15:09:31 +03:00
fix merge conflicts
This commit is contained in:
parent
d3224d0bba
commit
d04d379f66
1 changed files with 3 additions and 13 deletions
16
src/os.c
16
src/os.c
|
@ -196,18 +196,6 @@ static bool mi_os_mem_free(void* addr, size_t size, mi_stats_t* stats)
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
static void* mi_win_virtual_allocx(void* addr, size_t size, size_t try_alignment, DWORD flags) {
|
static void* mi_win_virtual_allocx(void* addr, size_t size, size_t try_alignment, DWORD flags) {
|
||||||
#if (MI_INTPTR_SIZE >= 8)
|
|
||||||
// on 64-bit systems, use the virtual address area after 4TiB for 4MiB aligned allocations
|
|
||||||
static volatile intptr_t aligned_base = ((intptr_t)4 << 40); // starting at 4TiB
|
|
||||||
if (addr == NULL && try_alignment > 0 &&
|
|
||||||
try_alignment <= MI_SEGMENT_SIZE && (size%MI_SEGMENT_SIZE) == 0)
|
|
||||||
{
|
|
||||||
intptr_t hint = mi_atomic_add(&aligned_base, size) - size;
|
|
||||||
if (hint%try_alignment == 0) {
|
|
||||||
return VirtualAlloc((void*)hint, size, flags, PAGE_READWRITE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#if defined(MEM_EXTENDED_PARAMETER_TYPE_BITS)
|
#if defined(MEM_EXTENDED_PARAMETER_TYPE_BITS)
|
||||||
// on modern Windows try use NtAllocateVirtualMemoryEx for 1GiB huge pages
|
// on modern Windows try use NtAllocateVirtualMemoryEx for 1GiB huge pages
|
||||||
if ((size % (uintptr_t)1 << 30) == 0 /* 1GiB multiple */
|
if ((size % (uintptr_t)1 << 30) == 0 /* 1GiB multiple */
|
||||||
|
@ -236,7 +224,9 @@ static void* mi_win_virtual_allocx(void* addr, size_t size, size_t try_alignment
|
||||||
#if (MI_INTPTR_SIZE >= 8)
|
#if (MI_INTPTR_SIZE >= 8)
|
||||||
// on 64-bit systems, use the virtual address area after 4TiB for 4MiB aligned allocations
|
// on 64-bit systems, use the virtual address area after 4TiB for 4MiB aligned allocations
|
||||||
static volatile intptr_t aligned_base = ((intptr_t)4 << 40); // starting at 4TiB
|
static volatile intptr_t aligned_base = ((intptr_t)4 << 40); // starting at 4TiB
|
||||||
if (addr == NULL && try_alignment > 0 && try_alignment <= MI_SEGMENT_SIZE && (size%MI_SEGMENT_SIZE) == 0) {
|
if (addr == NULL && try_alignment > 0 &&
|
||||||
|
try_alignment <= MI_SEGMENT_SIZE && (size%MI_SEGMENT_SIZE) == 0)
|
||||||
|
{
|
||||||
intptr_t hint = mi_atomic_add(&aligned_base, size) - size;
|
intptr_t hint = mi_atomic_add(&aligned_base, size) - size;
|
||||||
if (hint%try_alignment == 0) {
|
if (hint%try_alignment == 0) {
|
||||||
return VirtualAlloc((void*)hint, size, flags, PAGE_READWRITE);
|
return VirtualAlloc((void*)hint, size, flags, PAGE_READWRITE);
|
||||||
|
|
Loading…
Add table
Reference in a new issue