From 720fd7f7ed3a400d72a898bd7f977b633adc5726 Mon Sep 17 00:00:00 2001 From: Talha Qamar <qamartalha@proton.me> Date: Sat, 1 Feb 2025 06:19:29 +0500 Subject: [PATCH] Arena is a grower now --- src/lily/alloc/arena.hb | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/lily/alloc/arena.hb b/src/lily/alloc/arena.hb index 8a76cc7..12cef79 100644 --- a/src/lily/alloc/arena.hb +++ b/src/lily/alloc/arena.hb @@ -24,9 +24,13 @@ ArenaAllocator := struct { log.debug("deinit: allocator") } alloc := fn(self: ^Self, $T: type, count: uint): ?^T { - if count * @sizeof(T) + self.allocated > self.size { - log.error("You allocated more memory on the arena than the arena had."); - die + if self.allocated + count * @sizeof(T) > self.size { + ptr := Target.realloc(self.ptr, self.size, self.size * 2) + if ptr == null { + log.error("Failed to grow arena"); + die + } + self.ptr = @unwrap(ptr) } allocation := self.ptr + self.allocated self.allocated = self.allocated + count * @sizeof(T) @@ -55,4 +59,4 @@ ArenaAllocator := struct { } return null } -} \ No newline at end of file +}