From 7610db8ac399c9ae905caf9d91b85b2a576258f0 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Sat, 27 Jun 2020 22:43:03 -0500 Subject: [PATCH] Added managed heap allocation to bh.h This will simplify some of the allocations in the compiler --- include/bh.h | 92 +++++++++++++++++++++++++++++++++++++++++++++++++++ onyx | Bin 202248 -> 211768 bytes 2 files changed, 92 insertions(+) diff --git a/include/bh.h b/include/bh.h index 455c7963..482ef217 100644 --- a/include/bh.h +++ b/include/bh.h @@ -191,6 +191,16 @@ BH_ALLOCATOR_PROC(bh_heap_allocator_proc); +// MANAGED HEAP ALLOCATOR +typedef struct bh_managed_heap { + ptr* pointers; // Actually a bh_arr +} bh_managed_heap; + +void bh_managed_heap_init(bh_managed_heap* mh); +void bh_managed_heap_free(bh_managed_heap* mh); +bh_allocator bh_managed_heap_allocator(bh_managed_heap* mh); +BH_ALLOCATOR_PROC(bh_managed_heap_allocator_proc); + // ARENA ALLOCATOR @@ -795,6 +805,88 @@ BH_ALLOCATOR_PROC(bh_heap_allocator_proc) { +// MANAGED HEAP ALLOCATOR IMPLEMENTATION +void bh_managed_heap_init(bh_managed_heap* mh) { + mh->pointers = NULL; + + bh_arr_new(bh_heap_allocator(), mh->pointers, 4); +} + +void bh_managed_heap_free(bh_managed_heap* mh) { + bh_arr_each(ptr, p, mh->pointers) { + free(*p); + } + + bh_arr_free(mh->pointers); +} + +bh_allocator bh_managed_heap_allocator(bh_managed_heap* mh) { + return (bh_allocator) { + .proc = bh_managed_heap_allocator_proc, + .data = mh + }; +} + +BH_ALLOCATOR_PROC(bh_managed_heap_allocator_proc) { + bh_managed_heap* mh = (bh_managed_heap *) data; + ptr retval = NULL; + + switch (action) { + case bh_allocator_action_alloc: { + retval = aligned_alloc(alignment, size); + + if (flags & bh_allocator_flag_clear && retval != NULL) { + memset(retval, 0, size); + } + + if (retval != NULL) + bh_arr_push(mh->pointers, retval); + } break; + + case bh_allocator_action_resize: { + i32 replace_idx = 0; + b32 found = 0; + + bh_arr_each(ptr, p, mh->pointers) { + if (*p == prev_memory) { + found = 1; + break; + } + + replace_idx++; + } + + retval = realloc(prev_memory, size); + mh->pointers[replace_idx] = retval; + } break; + + case bh_allocator_action_free: { + i32 free_idx = 0; + b32 found = 0; + + bh_arr_each(ptr, p, mh->pointers) { + if (*p == prev_memory) { + found = 1; + break; + } + + free_idx++; + } + + bh_arr_fastdelete(mh->pointers, free_idx); + free(prev_memory); + } break; + } + + return retval; +} + + + + + + + // ARENA ALLOCATOR IMPLEMENTATION void bh_arena_init(bh_arena* alloc, bh_allocator backing, isize arena_size) { diff --git a/onyx b/onyx index 1342320070f7dec55390d54d1e1f8bfc7d38de45..d5be33e57d0629b73bd995d573b0bccb0f1d44a8 100755 GIT binary patch delta 46263 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 Ll)yCi*FFCOSr)Ox -- 2.25.1