mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-14 17:28:07 +00:00
do not round up commit and reserve sizes on optional buffers
This commit is contained in:
+23
-22
@@ -9,24 +9,25 @@
|
|||||||
internal Arena *
|
internal Arena *
|
||||||
arena_alloc_(ArenaParams *params)
|
arena_alloc_(ArenaParams *params)
|
||||||
{
|
{
|
||||||
// rjf: round up reserve/commit sizes
|
|
||||||
U64 reserve_size = params->reserve_size;
|
U64 reserve_size = params->reserve_size;
|
||||||
U64 commit_size = params->commit_size;
|
U64 commit_size = params->commit_size;
|
||||||
if(params->flags & ArenaFlag_LargePages)
|
|
||||||
{
|
|
||||||
reserve_size = AlignPow2(reserve_size, os_get_system_info()->large_page_size);
|
|
||||||
commit_size = AlignPow2(commit_size, os_get_system_info()->large_page_size);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
reserve_size = AlignPow2(reserve_size, os_get_system_info()->page_size);
|
|
||||||
commit_size = AlignPow2(commit_size, os_get_system_info()->page_size);
|
|
||||||
}
|
|
||||||
|
|
||||||
// rjf: reserve/commit initial block
|
// rjf: reserve/commit initial block
|
||||||
void *base = params->optional_backing_buffer;
|
void *base = params->optional_backing_buffer;
|
||||||
if(base == 0)
|
if(base == 0)
|
||||||
{
|
{
|
||||||
|
// rjf: round up reserve/commit sizes
|
||||||
|
if(params->flags & ArenaFlag_LargePages)
|
||||||
|
{
|
||||||
|
reserve_size = AlignPow2(reserve_size, os_get_system_info()->large_page_size);
|
||||||
|
commit_size = AlignPow2(commit_size, os_get_system_info()->large_page_size);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
reserve_size = AlignPow2(reserve_size, os_get_system_info()->page_size);
|
||||||
|
commit_size = AlignPow2(commit_size, os_get_system_info()->page_size);
|
||||||
|
}
|
||||||
|
|
||||||
if(params->flags & ArenaFlag_LargePages)
|
if(params->flags & ArenaFlag_LargePages)
|
||||||
{
|
{
|
||||||
base = os_reserve_large(reserve_size);
|
base = os_reserve_large(reserve_size);
|
||||||
@@ -56,18 +57,18 @@ arena_alloc_(ArenaParams *params)
|
|||||||
|
|
||||||
// rjf: extract arena header & fill
|
// rjf: extract arena header & fill
|
||||||
AsanUnpoisonMemoryRegion(base, ARENA_HEADER_SIZE);
|
AsanUnpoisonMemoryRegion(base, ARENA_HEADER_SIZE);
|
||||||
Arena *arena = (Arena *)base;
|
Arena *arena = base;
|
||||||
arena->current = arena;
|
arena->current = arena;
|
||||||
arena->flags = params->flags;
|
arena->flags = params->flags;
|
||||||
arena->cmt_size = params->commit_size;
|
arena->cmt_size = params->commit_size;
|
||||||
arena->res_size = params->reserve_size;
|
arena->res_size = params->reserve_size;
|
||||||
arena->base_pos = 0;
|
arena->base_pos = 0;
|
||||||
arena->pos = ARENA_HEADER_SIZE;
|
arena->pos = ARENA_HEADER_SIZE;
|
||||||
arena->cmt = commit_size;
|
arena->cmt = commit_size;
|
||||||
arena->res = reserve_size;
|
arena->res = reserve_size;
|
||||||
arena->allocation_site_file = params->allocation_site_file;
|
arena->allocation_site_file = params->allocation_site_file;
|
||||||
arena->allocation_site_line = params->allocation_site_line;
|
arena->allocation_site_line = params->allocation_site_line;
|
||||||
arena->name = params->name;
|
arena->name = params->name;
|
||||||
#if ARENA_FREE_LIST
|
#if ARENA_FREE_LIST
|
||||||
arena->free_last = 0;
|
arena->free_last = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user