diff options
author | Fox Caminiti <fox@foxcam.net> | 2022-08-03 16:57:07 -0400 |
---|---|---|
committer | Fox Caminiti <fox@foxcam.net> | 2022-08-03 16:57:07 -0400 |
commit | 8875d0226f0d38a1e5ef946e56cd15810627f5ac (patch) | |
tree | ef7a8fa7b19f41faade33bdf5eaa24902c3b9f37 /memory.cpp | |
parent | b26f27d9e3fd44ec5775accdc3666a339684be4c (diff) |
caching introduced
Diffstat (limited to 'memory.cpp')
-rw-r--r-- | memory.cpp | 19 |
1 files changed, 16 insertions, 3 deletions
@@ -2,7 +2,7 @@ static void InitMemoryTable(global_memory *GlobalMemory, memory *Memory, uint64 Size, memory_table_list TableName, char *Name) { memory_table *Table = &Memory->Slot[TableName]; Table->Name = Name; - Table->Address = (uint64 *)GlobalMemory->Address + GlobalMemory->CurrentPosition; + Table->Address = (uint64 *)((uint8 *)GlobalMemory->Address + GlobalMemory->CurrentPosition); Table->Size = Size; GlobalMemory->CurrentPosition += Size; } @@ -11,8 +11,21 @@ static void* AllocateMemory(memory *Memory, uint64 Size, memory_table_list TableName) { void *Address; memory_table *Table = &Memory->Slot[TableName]; - Assert(Table->CurrentPosition + Size < Table->Size); - Address = (uint64 *)Table->Address + Table->CurrentPosition; + if (Table->CurrentPosition + Size > Table->Size) { + return NULL; + } + Address = (uint64 *)((uint8 *)Table->Address + Table->CurrentPosition); Table->CurrentPosition += Size; return Address; } + +// Returns 0-1 range wherever Pointer is in relation to StartingPointer to Size*Amount. +static real32 +Memory_NormalizedPosition(void *StartingPointer, uint32 Amount, uint32 Size, void *Pointer) +{ + real32 Result = 0; + uint64 TotalSize = Amount*Size; + uint64 PointerLocationSize = (uint8 *)Pointer - (uint8 *)StartingPointer; + Result = (real32)PointerLocationSize / (real32)TotalSize; + return Result; +} |