linearAlloc: use 16-byte alignment
This commit is contained in:
parent
e26017a75c
commit
2c589cd2ef
@ -5,20 +5,20 @@ extern u32 __linear_heap, __linear_heap_size;
|
|||||||
// TODO: this allocator sucks! It is not thread-safe and you cannot 'free' this memory.
|
// TODO: this allocator sucks! It is not thread-safe and you cannot 'free' this memory.
|
||||||
void* linearAlloc(size_t size)
|
void* linearAlloc(size_t size)
|
||||||
{
|
{
|
||||||
static size_t currentOffset = 0;
|
static size_t currentOffset = 0;
|
||||||
size_t free = __linear_heap_size - currentOffset;
|
size_t free = __linear_heap_size - currentOffset;
|
||||||
|
|
||||||
// Enforce 8-byte alignment
|
// Enforce 16-byte alignment
|
||||||
size = (size + 7) &~ 7;
|
size = (size + 15) &~ 15;
|
||||||
|
|
||||||
void* mem = NULL;
|
void* mem = NULL;
|
||||||
if (free >= size)
|
if (free >= size)
|
||||||
{
|
{
|
||||||
mem = (void*)(__linear_heap + currentOffset);
|
mem = (void*)(__linear_heap + currentOffset);
|
||||||
currentOffset += size;
|
currentOffset += size;
|
||||||
}
|
}
|
||||||
|
|
||||||
return mem;
|
return mem;
|
||||||
}
|
}
|
||||||
|
|
||||||
void* linearRealloc(void* mem, size_t size)
|
void* linearRealloc(void* mem, size_t size)
|
||||||
|
Loading…
Reference in New Issue
Block a user