From 0a62235e16263adfe0be3a90c578a50e3277ed9b Mon Sep 17 00:00:00 2001 From: Jake Koroman Date: Tue, 2 Sep 2025 15:54:34 -0400 Subject: remove jrk_arena_expand. Wasn't properly implemented. When reallocing all pointers are invalidated. To properly implement growing I will need to either have a way of updating all pointers or treating the arena as a linked list. Pointers could also be indexes into the arena data array but then we lose pointer syntax. Not sure the best way to implement this. I don't have a use for growing arenas at the moment so this is a low priority. --- jrk.h | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) (limited to 'jrk.h') diff --git a/jrk.h b/jrk.h index bebefd2..02d86da 100644 --- a/jrk.h +++ b/jrk.h @@ -54,7 +54,6 @@ void *jrk_erealloc(void*, u64); jrk_Arena jrk_arena_create(u64); void *jrk__arena_push(jrk_Arena*, u64); -void jrk_arena_expand(jrk_Arena*, u64); i32 jrk_rand_num(i32); i32 jrk_rand_num_range(i32, i32); @@ -201,7 +200,6 @@ char *jrk_tmpstrings_pushf(char *, ...); #define arena_destroy jrk_arena_destroy #define arena_push_struct jrk_arena_push_struct #define arena_push_array jrk_arena_push_array - #define arena_expand jrk_arena_expand #define rand_num jrk_rand_num #define rand_num_range jrk_rand_num_range @@ -309,23 +307,16 @@ jrk_arena_create(u64 n) void * jrk__arena_push(jrk_Arena *arena, u64 n) { - while (arena->count + n >= arena->capacity) - jrk_arena_expand(arena, arena->capacity * 2); + jrk_assertv(arena->count + n <= arena->capacity, + "jrk__arena_push(%p, %ld): arena push requires %ld bytes but has a capacity of %ld bytes", + arena, n, arena->count + n, arena->capacity + ); void *result = &arena->data[arena->count]; arena->count += n; return result; } -void -jrk_arena_expand(jrk_Arena *arena, u64 new_capacity) -{ - u8 *tmp = jrk_erealloc(arena->data, new_capacity); - - arena->capacity = new_capacity; - arena->data = tmp; -} - i32 jrk_sb_appendf(jrk_StringBuilder *sb, const char *fmt, ...) { -- cgit v1.2.3