From ab9804860c0f7bc715e07e38dfe5b40fd3c01a51 Mon Sep 17 00:00:00 2001 From: Nikita Smith Date: Fri, 11 Oct 2024 09:32:16 -0700 Subject: [PATCH] base: bug fix large pages commit code path --- src/base/base_arena.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/base/base_arena.c b/src/base/base_arena.c index 02153650..ffe67daf 100644 --- a/src/base/base_arena.c +++ b/src/base/base_arena.c @@ -103,13 +103,21 @@ arena_push(Arena *arena, U64 size, U64 align) } // rjf: commit new pages, if needed - if(current->cmt < pos_pst && !(current->flags & ArenaFlag_LargePages)) + if(current->cmt < pos_pst) { U64 cmt_pst_aligned = pos_pst + current->cmt_size-1; cmt_pst_aligned -= cmt_pst_aligned%current->cmt_size; U64 cmt_pst_clamped = ClampTop(cmt_pst_aligned, current->res); U64 cmt_size = cmt_pst_clamped - current->cmt; - os_commit((U8 *)current + current->cmt, cmt_size); + U8 *cmt_ptr = (U8 *)current + current->cmt; + if(current->flags & ArenaFlag_LargePages) + { + os_commit_large(cmt_ptr, cmt_size); + } + else + { + os_commit(cmt_ptr, cmt_size); + } current->cmt = cmt_pst_clamped; }