diff options
Diffstat (limited to 'prb_arena.h')
-rw-r--r-- | prb_arena.h | 48 |
1 files changed, 0 insertions, 48 deletions
diff --git a/prb_arena.h b/prb_arena.h deleted file mode 100644 index 0a6de9b..0000000 --- a/prb_arena.h +++ /dev/null @@ -1,48 +0,0 @@ -#define DEFAULT_ARENA_SIZE kilobytes(4) - -arena_t alloc_arena(u64 capacity) -{ - void *sys_alloc(u64 length); - - /* TODO(pryazha): Find reasonable maximum capacity through testing */ - assert(capacity <= (u64)gigabytes(16)); - - if (!capacity) - capacity = DEFAULT_ARENA_SIZE; - - /* TODO(pryazha): Use OS specific memory allocator - * (like VirtualAlloc on Windows or mmap on Linux) - */ - void *memory = sys_alloc(capacity); - assert(memory); - - arena_t arena = {memory, capacity, 0}; - - return arena; -} - -void release_arena(arena_t *arena) -{ - void sys_free(void *memory, u64 length); - - assert(arena); - sys_free(arena->memory, arena->capacity); - arena->memory = 0; - arena->capacity = 0; - arena->used = 0; -} - -void *push_arena(arena_t *arena, u64 size) -{ - assert(arena); - assert(arena->used + size <= arena->capacity); - void *memory = arena->memory + arena->used; - arena->used += size; - return memory; -} - -void pop_arena(arena_t *arena, u64 size) -{ - assert(arena); - arena->used -= min(size, arena->used); -} |