aligned_stack.cpp 719 Bytes
Newer Older
FritzFlorian committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
#include "pls/internal/base/aligned_stack.h"
#include "pls/internal/base/system_details.h"

namespace pls {
    namespace internal {
        namespace base {
            std::uintptr_t aligned_stack::next_alignment(std::uintptr_t size) {
                std::uintptr_t miss_alignment = size % CACHE_LINE_SIZE;
                if (miss_alignment == 0) {
                    return size;
                } else {
                    return size + (CACHE_LINE_SIZE - miss_alignment);
                }
            }

            char* aligned_stack::next_alignment(char* pointer) {
                return reinterpret_cast<char*>(next_alignment(reinterpret_cast<std::uintptr_t >(pointer)));
            }
        }
    }
}