From 66de1856e37ed7917ef7d647ec794ca7e8c53c52 Mon Sep 17 00:00:00 2001 From: Ian Lilley Date: Wed, 1 Jun 2022 21:37:05 -0400 Subject: [PATCH] tighter allocation for arena allocator --- core/mem/allocators.odin | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/core/mem/allocators.odin b/core/mem/allocators.odin index d006e4574..6bedbf691 100644 --- a/core/mem/allocators.odin +++ b/core/mem/allocators.odin @@ -52,15 +52,16 @@ arena_allocator_proc :: proc(allocator_data: rawptr, mode: Allocator_Mode, switch mode { case .Alloc: - total_size := size + alignment + #no_bounds_check end := &arena.data[arena.offset] + + ptr := align_forward(end, uintptr(alignment)) + + total_size := size + ptr_sub((^byte)(ptr), (^byte)(end)) if arena.offset + total_size > len(arena.data) { return nil, .Out_Of_Memory } - #no_bounds_check end := &arena.data[arena.offset] - - ptr := align_forward(end, uintptr(alignment)) arena.offset += total_size arena.peak_used = max(arena.peak_used, arena.offset) zero(ptr, size)