just make commit granularity 64 bit; it matches the expected usage pattern in a few spots

This commit is contained in:
Ryan Fleury
2024-11-13 12:18:48 -08:00
parent 4278f7db1e
commit b03c1766c6
3 changed files with 10 additions and 15 deletions
+7 -7
View File
@@ -52,7 +52,7 @@ arena_alloc_(ArenaParams *params)
Arena *arena = (Arena *)base; Arena *arena = (Arena *)base;
arena->current = arena; arena->current = arena;
arena->flags = params->flags; arena->flags = params->flags;
arena->cmt_size = safe_cast_u32(params->commit_size); arena->cmt_size = params->commit_size;
arena->res_size = params->reserve_size; arena->res_size = params->reserve_size;
arena->base_pos = 0; arena->base_pos = 0;
arena->pos = ARENA_HEADER_SIZE; arena->pos = ARENA_HEADER_SIZE;
@@ -90,7 +90,7 @@ arena_push(Arena *arena, U64 size, U64 align)
if(current->res < pos_pst && !(arena->flags & ArenaFlag_NoChain)) if(current->res < pos_pst && !(arena->flags & ArenaFlag_NoChain))
{ {
Arena *new_block = 0; Arena *new_block = 0;
#if ARENA_FREE_LIST #if ARENA_FREE_LIST
Arena *prev_block; Arena *prev_block;
for(new_block = arena->free_last, prev_block = 0; new_block != 0; prev_block = new_block, new_block = new_block->prev) for(new_block = arena->free_last, prev_block = 0; new_block != 0; prev_block = new_block, new_block = new_block->prev)
@@ -106,12 +106,12 @@ arena_push(Arena *arena, U64 size, U64 align)
arena->free_last = new_block->prev; arena->free_last = new_block->prev;
} }
arena->free_size -= new_block->res_size; arena->free_size -= new_block->res_size;
AsanUnpoisonMemoryRegion((U8*)new_block + ARENA_HEADER_SIZE, new_block->res_size - ARENA_HEADER_SIZE); AsanUnpoisonMemoryRegion((U8*)new_block + ARENA_HEADER_SIZE, new_block->res_size - ARENA_HEADER_SIZE);
break; break;
} }
} }
#endif #endif
if(new_block == 0) if(new_block == 0)
{ {
U64 res_size = current->res_size; U64 res_size = current->res_size;
@@ -125,10 +125,10 @@ arena_push(Arena *arena, U64 size, U64 align)
.commit_size = cmt_size, .commit_size = cmt_size,
.flags = current->flags); .flags = current->flags);
} }
new_block->base_pos = current->base_pos + current->res; new_block->base_pos = current->base_pos + current->res;
SLLStackPush_N(arena->current, new_block, prev); SLLStackPush_N(arena->current, new_block, prev);
current = new_block; current = new_block;
pos_pre = AlignPow2(current->pos, align); pos_pre = AlignPow2(current->pos, align);
pos_pst = pos_pre + size; pos_pst = pos_pre + size;
@@ -187,7 +187,7 @@ arena_pop_to(Arena *arena, U64 pos)
{ {
U64 big_pos = ClampBot(ARENA_HEADER_SIZE, pos); U64 big_pos = ClampBot(ARENA_HEADER_SIZE, pos);
Arena *current = arena->current; Arena *current = arena->current;
#if ARENA_FREE_LIST #if ARENA_FREE_LIST
for(Arena *prev = 0; current->base_pos >= big_pos; current = prev) for(Arena *prev = 0; current->base_pos >= big_pos; current = prev)
{ {
+3 -7
View File
@@ -7,16 +7,12 @@
//////////////////////////////// ////////////////////////////////
//~ rjf: Constants //~ rjf: Constants
#if ARENA_FREE_LIST #define ARENA_HEADER_SIZE 128
# define ARENA_HEADER_SIZE 128
#else
# define ARENA_HEADER_SIZE 64
#endif
//////////////////////////////// ////////////////////////////////
//~ rjf: Types //~ rjf: Types
typedef U32 ArenaFlags; typedef U64 ArenaFlags;
enum enum
{ {
ArenaFlag_NoChain = (1<<0), ArenaFlag_NoChain = (1<<0),
@@ -38,7 +34,7 @@ struct Arena
Arena *prev; // previous arena in chain Arena *prev; // previous arena in chain
Arena *current; // current arena in chain Arena *current; // current arena in chain
ArenaFlags flags; ArenaFlags flags;
U32 cmt_size; U64 cmt_size;
U64 res_size; U64 res_size;
U64 base_pos; U64 base_pos;
U64 pos; U64 pos;
-1
View File
@@ -8798,7 +8798,6 @@ EV_VIEW_RULE_EXPR_EXPAND_RANGE_INFO_FUNCTION_DEF(scheduler_machine)
expr->space = rd_eval_space_from_ctrl_entity(process, RD_EvalSpaceKind_MetaCtrlEntity); expr->space = rd_eval_space_from_ctrl_entity(process, RD_EvalSpaceKind_MetaCtrlEntity);
expr->mode = E_Mode_Offset; expr->mode = E_Mode_Offset;
expr->type_key = e_type_key_cons_base(type(CTRL_ProcessMetaEval));; expr->type_key = e_type_key_cons_base(type(CTRL_ProcessMetaEval));;
info.row_strings[row_expr_idx] = process->string;
info.row_exprs[row_expr_idx] = expr; info.row_exprs[row_expr_idx] = expr;
info.row_members[row_expr_idx] = &e_member_nil; info.row_members[row_expr_idx] = &e_member_nil;
} }