1
0
Fork 0
arena-allocator/src/arena.c

44 lines
934 B
C
Raw Normal View History

internal Arena *
2024-04-25 17:34:00 +00:00
arena_initialize(u64 size, b8 growable)
{
Arena *result = 0;
2024-04-25 17:34:00 +00:00
void *backing_buffer = platform_memory_reserve(size);
if (backing_buffer != NULL)
{
2024-04-25 17:34:00 +00:00
platform_memory_commit(backing_buffer, ARENA_INITIAL_COMMIT_SIZE);
result = (Arena*) backing_buffer;
2024-04-25 17:34:00 +00:00
result->backing_buffer = backing_buffer;
2024-04-25 17:34:00 +00:00
// rhjr: immutable arena header
result->base_pos = sizeof(Arena);
result->commit_pos = sizeof(Arena);
result->growable = growable;
result->size = size;
}
2024-04-25 17:34:00 +00:00
// rhjr: arenas should be instantiated early on in the programs lifetime, that
// is why this assertion will also be used in production.
ASSERT(result != 0);
return result;
}
internal Arena *
arena_initialize_default()
{
Arena *result = arena_initialize(ARENA_DEFAULT_RESERVE_SIZE, 1);
return result;
}
internal void *
arena_allocate(Arena *arena, u64 size)
{
}
internal void
arena_release(Arena *arena)
{
}