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