diff options
| author | Jake Koroman <jake@jakekoroman.com> | 2025-09-02 15:54:34 -0400 |
|---|---|---|
| committer | Jake Koroman <jake@jakekoroman.com> | 2025-09-02 15:58:35 -0400 |
| commit | 0a62235e16263adfe0be3a90c578a50e3277ed9b (patch) | |
| tree | 7cab65b4826ec27f6806852bd7f0dc489c5add1c | |
| parent | 0845e6f115d1314d21e7176c79570bcd25707d73 (diff) | |
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.
| -rw-r--r-- | jrk.h | 17 |
1 files changed, 4 insertions, 13 deletions
@@ -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, ...) { |
