mirror of
https://github.com/Ed94/metadesk.git
synced 2026-08-07 16:18:49 +00:00
override for arena cap getter
This commit is contained in:
+11
-1
@@ -364,6 +364,7 @@ MD_StaticAssert(sizeof(MD_ArenaDefault) <= MD_IMPL_ArenaHeaderSize, arena_def_si
|
|||||||
#define MD_IMPL_ArenaAlloc MD_ArenaDefaultAlloc
|
#define MD_IMPL_ArenaAlloc MD_ArenaDefaultAlloc
|
||||||
#define MD_IMPL_ArenaRelease MD_ArenaDefaultRelease
|
#define MD_IMPL_ArenaRelease MD_ArenaDefaultRelease
|
||||||
#define MD_IMPL_ArenaGetPos MD_ArenaDefaultGetPos
|
#define MD_IMPL_ArenaGetPos MD_ArenaDefaultGetPos
|
||||||
|
#define MD_IMPL_ArenaGetCap MD_ArenaDefaultGetCap
|
||||||
#define MD_IMPL_ArenaPush MD_ArenaDefaultPush
|
#define MD_IMPL_ArenaPush MD_ArenaDefaultPush
|
||||||
#define MD_IMPL_ArenaPopTo MD_ArenaDefaultPopTo
|
#define MD_IMPL_ArenaPopTo MD_ArenaDefaultPopTo
|
||||||
#define MD_IMPL_ArenaSetAutoAlign MD_ArenaDefaultSetAutoAlign
|
#define MD_IMPL_ArenaSetAutoAlign MD_ArenaDefaultSetAutoAlign
|
||||||
@@ -417,6 +418,12 @@ MD_ArenaDefaultGetPos(MD_ArenaDefault *arena)
|
|||||||
return(result);
|
return(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static MD_u64
|
||||||
|
MD_ArenaDefaultGetCap(MD_ArenaDefault *arena)
|
||||||
|
{
|
||||||
|
return arena->cap;
|
||||||
|
}
|
||||||
|
|
||||||
static void*
|
static void*
|
||||||
MD_ArenaDefaultPush(MD_ArenaDefault *arena, MD_u64 size)
|
MD_ArenaDefaultPush(MD_ArenaDefault *arena, MD_u64 size)
|
||||||
{
|
{
|
||||||
@@ -532,6 +539,9 @@ MD_ArenaDefaultSetAutoAlign(MD_ArenaDefault *arena, MD_u64 align)
|
|||||||
#if !defined(MD_IMPL_ArenaGetPos)
|
#if !defined(MD_IMPL_ArenaGetPos)
|
||||||
# error Missing implementation for MD_IMPL_ArenaGetPos
|
# error Missing implementation for MD_IMPL_ArenaGetPos
|
||||||
#endif
|
#endif
|
||||||
|
#if !defined(MD_IMPL_ArenaGetCap)
|
||||||
|
# error Missing implementation for MD_IMPL_ArenaGetCap
|
||||||
|
#endif
|
||||||
#if !defined(MD_IMPL_ArenaPush)
|
#if !defined(MD_IMPL_ArenaPush)
|
||||||
# error Missing implementation for MD_IMPL_ArenaPush
|
# error Missing implementation for MD_IMPL_ArenaPush
|
||||||
#endif
|
#endif
|
||||||
@@ -661,7 +671,7 @@ MD_ArenaPushAlign(MD_Arena *arena, MD_u64 boundary){
|
|||||||
MD_u64 pos = MD_IMPL_ArenaGetPos(arena);
|
MD_u64 pos = MD_IMPL_ArenaGetPos(arena);
|
||||||
MD_u64 align_m1 = boundary - 1;
|
MD_u64 align_m1 = boundary - 1;
|
||||||
MD_u64 new_pos_aligned = (pos + align_m1)&(~align_m1);
|
MD_u64 new_pos_aligned = (pos + align_m1)&(~align_m1);
|
||||||
MD_u64 new_pos_clamped = MD_ClampTop(new_pos_aligned, arena->cap);
|
MD_u64 new_pos_clamped = MD_ClampTop(new_pos_aligned, MD_IMPL_ArenaGetCap(arena));
|
||||||
if (new_pos_clamped > pos){
|
if (new_pos_clamped > pos){
|
||||||
MD_u64 amt = new_pos_clamped - pos;
|
MD_u64 amt = new_pos_clamped - pos;
|
||||||
MD_MemoryZero(MD_IMPL_ArenaPush(arena, amt), amt);
|
MD_MemoryZero(MD_IMPL_ArenaPush(arena, amt), amt);
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
** #define MD_IMPL_ArenaAlloc () -> MD_IMPL_Arena*
|
** #define MD_IMPL_ArenaAlloc () -> MD_IMPL_Arena*
|
||||||
** #define MD_IMPL_ArenaRelease (MD_IMPL_Arena*) -> void
|
** #define MD_IMPL_ArenaRelease (MD_IMPL_Arena*) -> void
|
||||||
** #define MD_IMPL_ArenaGetPos (MD_IMPL_Arena*) -> MD_u64
|
** #define MD_IMPL_ArenaGetPos (MD_IMPL_Arena*) -> MD_u64
|
||||||
|
** #define MD_IMPL_ArenaGetCap (MD_IMPL_Arena*) -> MD_u64
|
||||||
** #define MD_IMPL_ArenaPush (MD_IMPL_Arena*, MD_u64) -> void*
|
** #define MD_IMPL_ArenaPush (MD_IMPL_Arena*, MD_u64) -> void*
|
||||||
** #define MD_IMPL_ArenaPopTo (MD_IMPL_Arena*, MD_u64) -> void
|
** #define MD_IMPL_ArenaPopTo (MD_IMPL_Arena*, MD_u64) -> void
|
||||||
** #define MD_IMPL_ArenaSetAutoAlign (MD_IMPL_Arena*, MD_u64) -> void
|
** #define MD_IMPL_ArenaSetAutoAlign (MD_IMPL_Arena*, MD_u64) -> void
|
||||||
|
|||||||
Reference in New Issue
Block a user