Cthulhu  0.2.10
Cthulhu compiler collection
TraceArena Class Referencefinal

#include <arena.hpp>

Inheritance diagram for TraceArena:
Collaboration diagram for TraceArena:

Public Types

enum  Collect { eCollectNone = 0 , eCollectStackTrace = 1 << 0 , eCollectTimeStamps = 1 << 1 }
 
using AllocMap = std::map< const void *, AllocInfo >
 
using AllocTree = std::map< const void *, std::vector< const void * > >
 
using AllocMapIter = AllocMap::iterator
 

Public Member Functions

void * malloc (size_t size) override
 
void * realloc (void *ptr, size_t new_size, size_t size) override
 
void free (void *ptr, size_t size) override
 
void rename (const void *ptr, const char *new_name) override
 
void reparent (const void *ptr, const void *parent) override
 
size_t add_stacktrace (const std::stacktrace &trace)
 
void create_alloc (void *ptr, size_t size)
 
void delete_alloc (void *ptr)
 
void update_parent (const void *ptr, const void *parent)
 
void update_name (const void *ptr, const char *new_name)
 
void remove_parents (const void *ptr)
 
bool has_children (const void *ptr) const
 
bool has_parent (const void *ptr) const
 
bool is_external (const void *ptr) const
 check if the given pointer was not allocated by this allocator More...
 
 TraceArena (const char *id, Collect collect)
 
void reset ()
 
- Public Member Functions inherited from IArena
virtual ~IArena ()=default
 
arena_tget_arena ()
 
const char * get_name () const
 
virtual void rename (CTX_UNUSED const void *ptr, CTX_UNUSED const char *new_name)
 
virtual void reparent (CTX_UNUSED const void *ptr, CTX_UNUSED const void *new_parent)
 

Data Fields

size_t malloc_calls = 0
 
size_t realloc_calls = 0
 
size_t free_calls = 0
 
Memory peak_memory_usage = 0
 
Memory live_memory_usage = 0
 
std::unordered_set< void * > live_allocs
 
std::unordered_map< size_t, std::stacktrace > stacktraces
 
int collect
 
AllocMap allocs
 
AllocTree tree
 

Additional Inherited Members

- Protected Member Functions inherited from IArena
 IArena (const char *id)
 

Detailed Description

Definition at line 22 of file arena.hpp.

Member Typedef Documentation

◆ AllocMap

using TraceArena::AllocMap = std::map<const void*, AllocInfo>

Definition at line 25 of file arena.hpp.

◆ AllocMapIter

using TraceArena::AllocMapIter = AllocMap::iterator

Definition at line 27 of file arena.hpp.

◆ AllocTree

using TraceArena::AllocTree = std::map<const void*, std::vector<const void*> >

Definition at line 26 of file arena.hpp.

Member Enumeration Documentation

◆ Collect

Enumerator
eCollectNone 
eCollectStackTrace 
eCollectTimeStamps 

Definition at line 77 of file arena.hpp.

Constructor & Destructor Documentation

◆ TraceArena()

TraceArena::TraceArena ( const char *  id,
Collect  collect 
)

Definition at line 51 of file arena.cpp.

Member Function Documentation

◆ add_stacktrace()

size_t TraceArena::add_stacktrace ( const std::stacktrace &  trace)

Definition at line 115 of file arena.cpp.

◆ create_alloc()

void TraceArena::create_alloc ( void *  ptr,
size_t  size 
)

Definition at line 123 of file arena.cpp.

◆ delete_alloc()

void TraceArena::delete_alloc ( void *  ptr)

Definition at line 139 of file arena.cpp.

◆ free()

void TraceArena::free ( void *  ptr,
size_t  size 
)
overridevirtual

Implements IArena.

Definition at line 83 of file arena.cpp.

◆ has_children()

bool TraceArena::has_children ( const void *  ptr) const

Definition at line 220 of file arena.cpp.

◆ has_parent()

bool TraceArena::has_parent ( const void *  ptr) const

Definition at line 230 of file arena.cpp.

◆ is_external()

bool TraceArena::is_external ( const void *  ptr) const

check if the given pointer was not allocated by this allocator

Parameters
ptrthe pointer to check
Returns
if the pointer was not allocated by this allocator

Definition at line 245 of file arena.cpp.

◆ malloc()

void * TraceArena::malloc ( size_t  size)
overridevirtual

Implements IArena.

Definition at line 56 of file arena.cpp.

◆ realloc()

void * TraceArena::realloc ( void *  ptr,
size_t  new_size,
size_t  size 
)
overridevirtual

Implements IArena.

Definition at line 67 of file arena.cpp.

◆ remove_parents()

void TraceArena::remove_parents ( const void *  ptr)

Definition at line 204 of file arena.cpp.

◆ rename()

void TraceArena::rename ( const void *  ptr,
const char *  new_name 
)
override

Definition at line 92 of file arena.cpp.

◆ reparent()

void TraceArena::reparent ( const void *  ptr,
const void *  parent 
)
override

Definition at line 97 of file arena.cpp.

◆ reset()

void TraceArena::reset ( )

Definition at line 102 of file arena.cpp.

◆ update_name()

void TraceArena::update_name ( const void *  ptr,
const char *  new_name 
)

Definition at line 199 of file arena.cpp.

◆ update_parent()

void TraceArena::update_parent ( const void *  ptr,
const void *  parent 
)

Definition at line 151 of file arena.cpp.

Field Documentation

◆ allocs

AllocMap TraceArena::allocs

Definition at line 58 of file arena.hpp.

◆ collect

int TraceArena::collect

Definition at line 55 of file arena.hpp.

◆ free_calls

size_t TraceArena::free_calls = 0

Definition at line 40 of file arena.hpp.

◆ live_allocs

std::unordered_set<void *> TraceArena::live_allocs

Definition at line 47 of file arena.hpp.

◆ live_memory_usage

Memory TraceArena::live_memory_usage = 0

Definition at line 44 of file arena.hpp.

◆ malloc_calls

size_t TraceArena::malloc_calls = 0

Definition at line 38 of file arena.hpp.

◆ peak_memory_usage

Memory TraceArena::peak_memory_usage = 0

Definition at line 43 of file arena.hpp.

◆ realloc_calls

size_t TraceArena::realloc_calls = 0

Definition at line 39 of file arena.hpp.

◆ stacktraces

std::unordered_map<size_t, std::stacktrace> TraceArena::stacktraces

Definition at line 51 of file arena.hpp.

◆ tree

AllocTree TraceArena::tree

Definition at line 61 of file arena.hpp.


The documentation for this class was generated from the following files: