perf(allocator): made allocation size align with page size of system

This commit is contained in:
Mineplay 2025-04-11 16:16:46 -05:00
parent c48200cd52
commit 776bee499d

View file

@ -29,12 +29,26 @@
#include <sys/mman.h>
#endif
static size_t page_size = 0;
void *hallocy_malloc(size_t size) {
if (page_size == 0) {
#if defined(_WIN32)
SYSTEM_INFO system_info;
GetSystemInfo(&system_info);
page_size = system_info.dwPageSize;
#elif defined(__linux__)
page_size = sysconf(_SC_PAGESIZE);
#endif
}
size_t aligned_size = page_size * ((size / page_size) + 1);
void *memory_pointer = NULL;
#if defined(_WIN32)
memory_pointer = VirtualAlloc(NULL, size, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
memory_pointer = VirtualAlloc(NULL, aligned_size, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
#elif defined(__linux__)
memory_pointer = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
memory_pointer = mmap(NULL, aligned_size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
#endif
return memory_pointer;