1
0
mirror of https://github.com/wolfpld/tracy.git synced 2025-03-20 07:40:02 +08:00

Make memUsage an atomic.

This commit is contained in:
Bartosz Taudul
2024-05-04 14:28:55 +02:00
parent 6199b2f883
commit 377e41fe61
6 changed files with 19 additions and 17 deletions
+1 -1
View File
@@ -3,6 +3,6 @@
namespace tracy
{
size_t memUsage = 0;
std::atomic<int64_t> memUsage( 0 );
}
+3 -2
View File
@@ -1,12 +1,13 @@
#ifndef __TRACYMEMORY_HPP__
#define __TRACYMEMORY_HPP__
#include <stdlib.h>
#include <atomic>
#include <stdint.h>
namespace tracy
{
extern size_t memUsage;
extern std::atomic<int64_t> memUsage;
}
+5 -5
View File
@@ -21,12 +21,12 @@ public:
, m_buffer( { m_ptr } )
, m_usage( BlockSize )
{
memUsage += BlockSize;
memUsage.fetch_add( BlockSize, std::memory_order_relaxed );
}
~Slab()
{
memUsage -= m_usage;
memUsage.fetch_sub( m_usage, std::memory_order_relaxed );
for( auto& v : m_buffer )
{
delete[] v;
@@ -105,7 +105,7 @@ public:
}
else
{
memUsage += size;
memUsage.fetch_add( size, std::memory_order_relaxed );
m_usage += size;
auto ret = new char[size];
m_buffer.emplace_back( ret );
@@ -117,7 +117,7 @@ public:
{
if( m_buffer.size() > 1 )
{
memUsage -= m_usage - BlockSize;
memUsage.fetch_sub( m_usage - BlockSize, std::memory_order_relaxed );
m_usage = BlockSize;
for( int i=1; i<m_buffer.size(); i++ )
{
@@ -143,7 +143,7 @@ private:
m_ptr = ptr;
m_offset = willUseBytes;
m_buffer.emplace_back( m_ptr );
memUsage += BlockSize;
memUsage.fetch_add( BlockSize, std::memory_order_relaxed );
m_usage += BlockSize;
return ptr;
}
+6 -6
View File
@@ -47,7 +47,7 @@ public:
, m_capacity( 0 )
, m_magic( 0 )
{
memUsage += sizeof( T );
memUsage.fetch_add( sizeof( T ), std::memory_order_relaxed );
new(m_ptr) T( value );
}
@@ -55,7 +55,7 @@ public:
{
if( m_capacity != MaxCapacity() && m_ptr )
{
memUsage -= Capacity() * sizeof( T );
memUsage.fetch_sub( Capacity() * sizeof( T ), std::memory_order_relaxed );
free( m_ptr );
}
}
@@ -65,7 +65,7 @@ public:
{
if( m_capacity != MaxCapacity() && m_ptr )
{
memUsage -= Capacity() * sizeof( T );
memUsage.fetch_sub( Capacity() * sizeof( T ), std::memory_order_relaxed );
free( m_ptr );
}
memcpy( (char*)this, &src, sizeof( Vector<T> ) );
@@ -254,7 +254,7 @@ public:
cap |= cap >> 8;
cap |= cap >> 16;
cap = TracyCountBits( cap );
memUsage += ( ( 1 << cap ) - Capacity() ) * sizeof( T );
memUsage.fetch_add( ( ( 1 << cap ) - Capacity() ) * sizeof( T ), std::memory_order_relaxed );
m_capacity = cap;
Realloc();
}
@@ -291,13 +291,13 @@ private:
if( m_ptr == nullptr )
{
memUsage += sizeof( T );
memUsage.fetch_add( sizeof( T ), std::memory_order_relaxed );
m_ptr = (T*)malloc( sizeof( T ) );
m_capacity = 0;
}
else
{
memUsage += Capacity() * sizeof( T );
memUsage.fetch_add( Capacity() * sizeof( T ), std::memory_order_relaxed );
m_capacity++;
Realloc();
}