Lines Matching full:alignment
24 // Reference on memory alignment:
25 // http://stackoverflow.com/questions/227897/solve-the-memory-alignment-in-c-interview-question-tha…
28 uintptr_t GetRightAlign(uintptr_t start_pos, size_t alignment) { in GetRightAlign() argument
29 // The pointer should be aligned with |alignment| bytes. The - 1 guarantees in GetRightAlign()
31 return (start_pos + alignment - 1) & ~(alignment - 1); in GetRightAlign()
34 // Alignment must be an integer power of two.
35 bool ValidAlignment(size_t alignment) { in ValidAlignment() argument
36 if (!alignment) { in ValidAlignment()
39 return (alignment & (alignment - 1)) == 0; in ValidAlignment()
42 void* GetRightAlign(const void* pointer, size_t alignment) { in GetRightAlign() argument
46 if (!ValidAlignment(alignment)) { in GetRightAlign()
50 return reinterpret_cast<void*>(GetRightAlign(start_pos, alignment)); in GetRightAlign()
53 void* AlignedMalloc(size_t size, size_t alignment) { in AlignedMalloc() argument
57 if (!ValidAlignment(alignment)) { in AlignedMalloc()
62 // alignment - 1 bytes needs to be allocated. in AlignedMalloc()
65 void* memory_pointer = malloc(size + sizeof(uintptr_t) + alignment - 1); in AlignedMalloc()
72 uintptr_t aligned_pos = GetRightAlign(align_start_pos, alignment); in AlignedMalloc()