mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-06 13:58:40 +00:00
fix free block check and remove unused free_size field
This commit is contained in:
committed by
Ryan Fleury
parent
8f749f4239
commit
082f6cf6fd
+13
-15
@@ -62,7 +62,6 @@ arena_alloc_(ArenaParams *params)
|
|||||||
arena->allocation_site_file = params->allocation_site_file;
|
arena->allocation_site_file = params->allocation_site_file;
|
||||||
arena->allocation_site_line = params->allocation_site_line;
|
arena->allocation_site_line = params->allocation_site_line;
|
||||||
#if ARENA_FREE_LIST
|
#if ARENA_FREE_LIST
|
||||||
arena->free_size = 0;
|
|
||||||
arena->free_last = 0;
|
arena->free_last = 0;
|
||||||
#endif
|
#endif
|
||||||
AsanPoisonMemoryRegion(base, commit_size);
|
AsanPoisonMemoryRegion(base, commit_size);
|
||||||
@@ -95,22 +94,22 @@ arena_push(Arena *arena, U64 size, U64 align, B32 zero)
|
|||||||
Arena *new_block = 0;
|
Arena *new_block = 0;
|
||||||
|
|
||||||
#if ARENA_FREE_LIST
|
#if ARENA_FREE_LIST
|
||||||
Arena *prev_block;
|
|
||||||
for(new_block = arena->free_last, prev_block = 0; new_block != 0; prev_block = new_block, new_block = new_block->prev)
|
|
||||||
{
|
{
|
||||||
if(new_block->res >= AlignPow2(size, align))
|
Arena *prev_block;
|
||||||
|
for(new_block = arena->free_last, prev_block = 0; new_block != 0; prev_block = new_block, new_block = new_block->prev)
|
||||||
{
|
{
|
||||||
if(prev_block)
|
if(new_block->res >= AlignPow2(new_block->pos, align) + size)
|
||||||
{
|
{
|
||||||
prev_block->prev = new_block->prev;
|
if(prev_block)
|
||||||
|
{
|
||||||
|
prev_block->prev = new_block->prev;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
arena->free_last = new_block->prev;
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
arena->free_last = new_block->prev;
|
|
||||||
}
|
|
||||||
arena->free_size -= new_block->res_size;
|
|
||||||
AsanUnpoisonMemoryRegion((U8*)new_block + ARENA_HEADER_SIZE, new_block->res_size - ARENA_HEADER_SIZE);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -209,9 +208,8 @@ arena_pop_to(Arena *arena, U64 pos)
|
|||||||
{
|
{
|
||||||
prev = current->prev;
|
prev = current->prev;
|
||||||
current->pos = ARENA_HEADER_SIZE;
|
current->pos = ARENA_HEADER_SIZE;
|
||||||
arena->free_size += current->res_size;
|
|
||||||
SLLStackPush_N(arena->free_last, current, prev);
|
SLLStackPush_N(arena->free_last, current, prev);
|
||||||
AsanPoisonMemoryRegion((U8*)current + ARENA_HEADER_SIZE, current->res_size - ARENA_HEADER_SIZE);
|
AsanPoisonMemoryRegion((U8*)current + ARENA_HEADER_SIZE, current->res - ARENA_HEADER_SIZE);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
for(Arena *prev = 0; current->base_pos >= big_pos; current = prev)
|
for(Arena *prev = 0; current->base_pos >= big_pos; current = prev)
|
||||||
|
|||||||
@@ -42,7 +42,6 @@ struct Arena
|
|||||||
char *allocation_site_file;
|
char *allocation_site_file;
|
||||||
int allocation_site_line;
|
int allocation_site_line;
|
||||||
#if ARENA_FREE_LIST
|
#if ARENA_FREE_LIST
|
||||||
U64 free_size;
|
|
||||||
Arena *free_last;
|
Arena *free_last;
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user