summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJake Koroman <jake@jakekoroman.com>2025-09-02 15:54:34 -0400
committerJake Koroman <jake@jakekoroman.com>2025-09-02 15:58:35 -0400
commit0a62235e16263adfe0be3a90c578a50e3277ed9b (patch)
tree7cab65b4826ec27f6806852bd7f0dc489c5add1c
parent0845e6f115d1314d21e7176c79570bcd25707d73 (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.h17
1 files changed, 4 insertions, 13 deletions
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, ...)
{