1 /* Apache License, Version 2.0 */
3 #include "testing/testing.h"
5 #include "MEM_guardedalloc.h"
7 #define CHECK_ALIGNMENT(ptr, align) EXPECT_EQ(0, (size_t)ptr % align)
11 void DoBasicAlignmentChecks(const int alignment)
15 foo = (int *) MEM_mallocN_aligned(sizeof(int) * 10, alignment, "test");
16 CHECK_ALIGNMENT(foo, alignment);
18 bar = (int *) MEM_dupallocN(foo);
19 CHECK_ALIGNMENT(bar, alignment);
22 foo = (int *) MEM_reallocN(foo, sizeof(int) * 5);
23 CHECK_ALIGNMENT(foo, alignment);
25 foo = (int *) MEM_recallocN(foo, sizeof(int) * 5);
26 CHECK_ALIGNMENT(foo, alignment);
33 TEST(guardedalloc, LockfreeAlignedAlloc16)
35 DoBasicAlignmentChecks(16);
38 TEST(guardedalloc, GuardedAlignedAlloc16)
40 MEM_use_guarded_allocator();
41 DoBasicAlignmentChecks(16);
44 // On Apple we currently support 16 bit alignment only.
45 // Harmless for Blender, but would be nice to support
48 TEST(guardedalloc, GuardedAlignedAlloc32)
50 MEM_use_guarded_allocator();
51 DoBasicAlignmentChecks(32);