Home | History | Annotate | Download | only in tests
      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))
     14 static 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    posix_memalign((void **)&x, 16, 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 // Allocates a 32-aligned block.  Asserts if the allocation fails.
     29 __attribute__((unused))
     30 static void* memalign32(size_t szB)
     31 {
     32    void* x;
     33 #if defined(VGO_darwin)
     34    // Darwin lacks memalign
     35    posix_memalign((void **)&x, 32, szB);
     36 #else
     37    x = memalign(32, szB);
     38 #endif
     39    assert(x);
     40    assert(0 == ((32-1) & (unsigned long)x));
     41    return x;
     42 }
     43 
     44 // Allocates a 64-aligned block.  Asserts if the allocation fails.
     45 __attribute__((unused))
     46 static void* memalign64(size_t szB)
     47 {
     48    void* x;
     49 #if defined(VGO_darwin)
     50    // Darwin lacks memalign
     51    posix_memalign((void **)&x, 64, szB);
     52 #else
     53    x = memalign(64, szB);
     54 #endif
     55    assert(x);
     56    assert(0 == ((64-1) & (unsigned long)x));
     57    return x;
     58 }
     59 
     60