FlattenableUtils::align memsets am: e62a9d7669 am: 59e7d4e8ea
am: 3f273f49f1
Change-Id: I91a8ef78619709fcdcb48cdad8e0e7a6b699b631
This commit is contained in:
commit
f7724dfcfb
1 changed files with 6 additions and 1 deletions
|
|
@ -47,7 +47,12 @@ public:
|
||||||
|
|
||||||
template<size_t N>
|
template<size_t N>
|
||||||
static size_t align(void*& buffer) {
|
static size_t align(void*& buffer) {
|
||||||
return align<N>( const_cast<void const*&>(buffer) );
|
static_assert(!(N & (N - 1)), "Can only align to a power of 2.");
|
||||||
|
void* b = buffer;
|
||||||
|
buffer = reinterpret_cast<void*>((uintptr_t(buffer) + (N-1)) & ~(N-1));
|
||||||
|
size_t delta = size_t(uintptr_t(buffer) - uintptr_t(b));
|
||||||
|
memset(b, 0, delta);
|
||||||
|
return delta;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void advance(void*& buffer, size_t& size, size_t offset) {
|
static void advance(void*& buffer, size_t& size, size_t offset) {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue