#include "pls/internal/data_structures/aligned_stack.h" #include "pls/internal/base/system_details.h" namespace pls { namespace internal { namespace data_structures { aligned_stack::aligned_stack(char* memory_region, const std::size_t size): memory_start_{memory_region}, memory_end_{memory_region + size}, head_{next_alignment(memory_start_)} {} std::uintptr_t aligned_stack::next_alignment(std::uintptr_t size) { std::uintptr_t miss_alignment = size % base::CACHE_LINE_SIZE; if (miss_alignment == 0) { return size; } else { return size + (base::CACHE_LINE_SIZE - miss_alignment); } } char* aligned_stack::next_alignment(char* pointer) { return reinterpret_cast(next_alignment(reinterpret_cast(pointer))); } } } }