GCC Middle and Back End API Reference
|
#include <mem-stats.h>
Data Structures | |
struct | mem_location_hash |
Public Types | |
typedef hash_map< mem_location_hash, T * > | mem_map_t |
typedef hash_map< const void *, mem_usage_pair< T > > | reverse_mem_map_t |
typedef hash_map< const void *, std::pair< T *, size_t > > | reverse_object_map_t |
typedef std::pair< mem_location *, T * > | mem_list_t |
Public Member Functions | |
mem_alloc_description () | |
~mem_alloc_description () | |
bool | contains_descriptor_for_instance (const void *ptr) |
T * | get_descriptor_for_instance (const void *ptr) |
T * | register_descriptor (const void *ptr, mem_location *location) |
T * | register_descriptor (const void *ptr, mem_alloc_origin origin, bool ggc, const char *name, int line, const char *function) |
T * | register_instance_overhead (size_t size, const void *ptr) |
void | register_object_overhead (T *usage, size_t size, const void *ptr) |
T * | release_instance_overhead (void *ptr, size_t size, bool remove_from_map=false) |
void | release_object_overhead (void *ptr) |
void | unregister_descriptor (void *ptr) |
T | get_sum (mem_alloc_origin origin) |
mem_list_t * | get_list (mem_alloc_origin origin, unsigned *length) |
void | dump (mem_alloc_origin origin) |
Data Fields | |
reverse_object_map_t * | m_reverse_object_map |
Private Member Functions | |
T * | register_overhead (size_t size, mem_alloc_origin origin, const char *name, int line, const char *function, const void *ptr) |
Private Attributes | |
mem_location | m_location |
mem_map_t * | m_map |
reverse_mem_map_t * | m_reverse_map |
Memory allocation description.
typedef std::pair<mem_location *, T *> mem_alloc_description< T >::mem_list_t |
typedef hash_map<mem_location_hash, T *> mem_alloc_description< T >::mem_map_t |
typedef hash_map<const void *, mem_usage_pair<T> > mem_alloc_description< T >::reverse_mem_map_t |
typedef hash_map<const void *, std::pair<T *, size_t> > mem_alloc_description< T >::reverse_object_map_t |
|
inline |
Default contructor.
References m_map, m_reverse_map, and m_reverse_object_map.
|
inline |
Default destructor.
References m_map, m_reverse_map, and m_reverse_object_map.
|
inline |
Returns true if instance PTR is registered by the memory description.
References m_reverse_map.
|
inline |
Dump all tracked instances of type ORIGIN. If we want to process custom order, CMP comparator can be provided.
References get_list(), mem_location::get_origin_name(), get_sum(), i, and T.
|
inline |
Return descriptor for instance PTR.
References m_reverse_map, and NULL.
|
inline |
|
inline |
Get sum value for ORIGIN type of allocation for the descriptor.
References get_list(), i, and T.
Referenced by dump().
|
inline |
Register memory allocation descriptor for container PTR. ORIGIN identifies type of container and GGC identifes if the allocation is handled in GGC memory. Each location is identified by file NAME, LINE in source code and FUNCTION name.
References register_descriptor().
|
inline |
Register memory allocation descriptor for container PTR which is described by a memory LOCATION.
References m_map, m_reverse_map, NULL, T, and usage().
Referenced by register_descriptor(), and register_overhead().
|
inline |
Register instance overhead identified by PTR pointer. Allocation takes SIZE bytes.
References m_reverse_map, NULL, T, and usage().
void mem_alloc_description< T >::register_object_overhead | ( | T * | usage, |
size_t | size, | ||
const void * | ptr ) |
For containers (and GGC) where we want to track every instance object, we register allocation of SIZE bytes, identified by PTR pointer, belonging to USAGE descriptor.
References m_reverse_object_map, T, and usage().
|
inlineprivate |
Register overhead of SIZE bytes of ORIGIN type. PTR pointer is allocated in NAME source file, at LINE in source code, in FUNCTION.
References register_descriptor(), T, and usage().
|
inline |
Release PTR pointer of SIZE bytes.
References m_reverse_map, NULL, T, and usage().
|
inline |
Release instance object identified by PTR pointer.
References m_reverse_object_map.
|
inline |
Unregister a memory allocation descriptor registered with register_descriptor (remove from reverse map), unless it is unregistered through release_instance_overhead with REMOVE_FROM_MAP = true.
References m_reverse_map.
|
private |
|
private |
Referenced by get_list(), mem_alloc_description(), register_descriptor(), and ~mem_alloc_description().
|
private |
reverse_object_map_t* mem_alloc_description< T >::m_reverse_object_map |
Referenced by mem_alloc_description(), register_object_overhead(), release_object_overhead(), and ~mem_alloc_description().