aboutsummaryrefslogtreecommitdiff
path: root/src/common_memory.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/common_memory.cpp')
-rw-r--r--src/common_memory.cpp19
1 files changed, 9 insertions, 10 deletions
diff --git a/src/common_memory.cpp b/src/common_memory.cpp
index dfc86b5f3..8d1161f25 100644
--- a/src/common_memory.cpp
+++ b/src/common_memory.cpp
@@ -57,8 +57,8 @@ struct MemoryBlock {
};
struct Arena {
- MemoryBlock * curr_block;
- isize minimum_block_size;
+ MemoryBlock *curr_block;
+ isize minimum_block_size;
bool use_local_mutex;
BlockingMutex local_mutex;
};
@@ -69,8 +69,14 @@ gb_global isize DEFAULT_PAGE_SIZE = 4096;
MemoryBlock *virtual_memory_alloc(isize size);
void virtual_memory_dealloc(MemoryBlock *block);
+void *arena_alloc(Arena *arena, isize min_size, isize alignment);
void arena_free_all(Arena *arena);
+void arena_init_local_mutex(Arena *arena) {
+ mutex_init(&arena->local_mutex);
+ arena->use_local_mutex = true;
+}
+
isize arena_align_forward_offset(Arena *arena, isize alignment) {
isize alignment_offset = 0;
isize ptr = cast(isize)(arena->curr_block->base + arena->curr_block->used);
@@ -81,17 +87,9 @@ isize arena_align_forward_offset(Arena *arena, isize alignment) {
return alignment_offset;
}
-void arena_init_local_mutex(Arena *arena) {
- mutex_init(&arena->local_mutex);
- arena->use_local_mutex = true;
-}
-
-
-
void *arena_alloc(Arena *arena, isize min_size, isize alignment) {
GB_ASSERT(gb_is_power_of_two(alignment));
-
BlockingMutex *mutex = &global_memory_allocator_mutex;
if (arena->use_local_mutex) {
mutex = &arena->local_mutex;
@@ -289,6 +287,7 @@ GB_ALLOCATOR_PROC(arena_allocator_proc) {
}
break;
case gbAllocation_FreeAll:
+ GB_PANIC("use arena_free_all directly");
arena_free_all(arena);
break;
}