linearAlloc: use 16-byte alignment

This commit is contained in:
fincs 2014-09-16 22:24:26 +02:00
parent e26017a75c
commit 2c589cd2ef

View File

@ -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)