Replace AllignedAllocator implementation with rpmalloc calls

This commit is contained in:
Lukas W
2018-04-18 08:12:56 +02:00
parent 178888af94
commit 2cb4455a5f
2 changed files with 5 additions and 23 deletions

View File

@@ -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<T*>( alloc_impl( sizeof(T) * n, alignment ) );
return reinterpret_cast<T*>( alloc_impl( alignment, sizeof(T) * n ) );
}
void deallocate( T* p, std::size_t )

View File

@@ -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<char*>( 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<int*>( p ) - 1;
p = static_cast<char*>( p ) - *ptr2;
free( p );
rpfree(p);
}