1// Replacement for malloc.h which factors out platform differences. 2 3#include <stdlib.h> 4#if defined(VGO_darwin) 5# include <malloc/malloc.h> 6#else 7# include <malloc.h> 8#endif 9 10#include <assert.h> 11 12// Allocates a 16-aligned block. Asserts if the allocation fails. 13__attribute__((unused)) 14static void* memalign16(size_t szB) 15{ 16 void* x; 17#if defined(VGO_darwin) 18 // Darwin lacks memalign, but its malloc is always 16-aligned anyway. 19 x = malloc(szB); 20#else 21 x = memalign(16, szB); 22#endif 23 assert(x); 24 assert(0 == ((16-1) & (unsigned long)x)); 25 return x; 26} 27 28