optimize shrinking reallocs

This commit is contained in:
Ole Morud
2023-06-17 12:14:28 +02:00
parent b3638c3c00
commit cf964c4dcc

View File

@@ -116,6 +116,11 @@ void* arena_calloc(arena_t* a, size_t nmemb, size_t size)
void* arena_realloc_tail(arena_t* a, size_t len) void* arena_realloc_tail(arena_t* a, size_t len)
{ {
if (len <= (a->head->offset - a->head->prev_offset)) {
a->head->offset = a->head->prev_offset + len;
return (byte_t*)(a->head->data) + a->head->prev_offset;
}
if (a->head->offset == BIG_PAGE) { if (a->head->offset == BIG_PAGE) {
void* tmp = realloc(a->head->data, len); void* tmp = realloc(a->head->data, len);