Blender  V3.3
guardedalloc_alignment_test.cc
Go to the documentation of this file.
1 /* SPDX-License-Identifier: Apache-2.0 */
2 
3 #include "testing/testing.h"
4 
5 #include "BLI_utildefines.h"
6 
7 #include "MEM_guardedalloc.h"
9 
10 #define CHECK_ALIGNMENT(ptr, align) EXPECT_EQ((size_t)ptr % align, 0)
11 
12 namespace {
13 
14 void DoBasicAlignmentChecks(const int alignment)
15 {
16  int *foo, *bar;
17 
18  foo = (int *)MEM_mallocN_aligned(sizeof(int) * 10, alignment, "test");
19  CHECK_ALIGNMENT(foo, alignment);
20 
21  bar = (int *)MEM_dupallocN(foo);
22  CHECK_ALIGNMENT(bar, alignment);
23  MEM_freeN(bar);
24 
25  foo = (int *)MEM_reallocN(foo, sizeof(int) * 5);
26  CHECK_ALIGNMENT(foo, alignment);
27 
28  foo = (int *)MEM_recallocN(foo, sizeof(int) * 5);
29  CHECK_ALIGNMENT(foo, alignment);
30 
31  MEM_freeN(foo);
32 }
33 
34 } // namespace
35 
37 {
38  DoBasicAlignmentChecks(1);
39  DoBasicAlignmentChecks(2);
40  DoBasicAlignmentChecks(4);
41  DoBasicAlignmentChecks(8);
42  DoBasicAlignmentChecks(16);
43  DoBasicAlignmentChecks(32);
44  DoBasicAlignmentChecks(256);
45  DoBasicAlignmentChecks(512);
46 }
47 
49 {
50  DoBasicAlignmentChecks(1);
51  DoBasicAlignmentChecks(2);
52  DoBasicAlignmentChecks(4);
53  DoBasicAlignmentChecks(8);
54  DoBasicAlignmentChecks(16);
55  DoBasicAlignmentChecks(32);
56  DoBasicAlignmentChecks(256);
57  DoBasicAlignmentChecks(512);
58 }
Read Guarded memory(de)allocation.
#define MEM_recallocN(vmemh, len)
#define MEM_reallocN(vmemh, len)
TEST_F(LockFreeAllocatorTest, MEM_mallocN_aligned)
#define CHECK_ALIGNMENT(ptr, align)
void(* MEM_freeN)(void *vmemh)
Definition: mallocn.c:27
void *(* MEM_dupallocN)(const void *vmemh)
Definition: mallocn.c:28
void *(* MEM_mallocN_aligned)(size_t len, size_t alignment, const char *str)
Definition: mallocn.c:35