From 2cb4455a5f2c1a63bc341cc29b6922ba7311f3cc Mon Sep 17 00:00:00 2001 From: Lukas W Date: Wed, 18 Apr 2018 08:12:56 +0200 Subject: [PATCH] Replace AllignedAllocator implementation with rpmalloc calls --- include/Memory.h | 4 ++-- src/core/Memory.cpp | 24 +++--------------------- 2 files changed, 5 insertions(+), 23 deletions(-) diff --git a/include/Memory.h b/include/Memory.h index f4cc126e0..791d45c20 100644 --- a/include/Memory.h +++ b/include/Memory.h @@ -81,7 +81,7 @@ private: class _AlignedAllocator_Base { protected: - void* alloc_impl( size_t n, size_t alignment ); + void* alloc_impl( size_t alignment, size_t size ); void dealloc_impl( void* p ); }; @@ -97,7 +97,7 @@ public: T* allocate( std::size_t n ) { - return reinterpret_cast( alloc_impl( sizeof(T) * n, alignment ) ); + return reinterpret_cast( alloc_impl( alignment, sizeof(T) * n ) ); } void deallocate( T* p, std::size_t ) diff --git a/src/core/Memory.cpp b/src/core/Memory.cpp index 9f3df1f07..bd8b1ca80 100644 --- a/src/core/Memory.cpp +++ b/src/core/Memory.cpp @@ -69,30 +69,12 @@ void MemoryManager::thread_deinitialize() rpmalloc_thread_finalize(); } -void* _AlignedAllocator_Base::alloc_impl( size_t n , size_t alignment) +void* _AlignedAllocator_Base::alloc_impl(size_t alignment, size_t size ) { - char *ptr, *ptr2, *aligned_ptr; - int align_mask = alignment - 1; - - ptr = static_cast( malloc( n + alignment + sizeof( int ) ) ); - - if( ptr == NULL ) throw std::bad_alloc{}; - - ptr2 = ptr + sizeof( int ); - aligned_ptr = ptr2 + ( alignment - ( ( size_t ) ptr2 & align_mask ) ); - - ptr2 = aligned_ptr - sizeof( int ); - *( ( int* ) ptr2 ) = ( int )( aligned_ptr - ptr ); - - return aligned_ptr; + return rpaligned_alloc(alignment, size); } void _AlignedAllocator_Base::dealloc_impl(void* p) { - if ( !p ) return; - - int *ptr2 = static_cast( p ) - 1; - p = static_cast( p ) - *ptr2; - free( p ); + rpfree(p); } -