16#ifndef COOK_MEM_LOGGER_H
17#define COOK_MEM_LOGGER_H
205 : m_numAllocations (0),
206 m_numDeallocations (0),
207 m_numGetSegments (0),
208 m_numFreeSegments (0),
209 m_numTrimEmptySegments (0),
210 m_totalAllocated (0),
211 m_totalDeallocated (0),
212 m_totalGetSegmentSize (0),
213 m_totalFreeSegmentSize (0),
214 m_currentAllocated (0),
216 m_currentSegments (0),
218 m_currentSegmentSize (0),
219 m_peakSegmentSize (0),
220 m_numAllocationsByType {}
229 return m_numAllocationsByType[
allocType];
265 m_numAllocationsByType[allocType] = value;
267 void setNumDeallocations (std::size_t value) { m_numDeallocations = value; }
268 void setNumGetSegments (std::size_t value) { m_numGetSegments = value; }
269 void setNumFreeSegments (std::size_t value) { m_numFreeSegments = value; }
270 void setNumTrimEmptySegments (std::size_t value) { m_numTrimEmptySegments = value; }
271 void setTotalAllocated (std::size_t value) { m_totalAllocated = value; }
272 void setTotalDeallocated (std::size_t value) { m_totalDeallocated = value; }
273 void setTotalGetSegmentSize (std::size_t value) { m_totalGetSegmentSize = value; }
274 void setTotalFreeSegmentSize (std::size_t value) { m_totalFreeSegmentSize = value; }
275 void setCurrentAllocated (std::size_t value) { m_currentAllocated = value; }
276 void setPeakAllocated (std::size_t value) { m_peakAllocated = value; }
277 void setCurrentSegments (std::size_t value) { m_currentSegments = value; }
278 void setPeakSegments (std::size_t value) { m_peakSegments = value; }
279 void setCurrentSegmentSize (std::size_t value) { m_currentSegmentSize = value; }
280 void setPeakSegmentSize (std::size_t value) { m_peakSegmentSize = value; }
289 std::printf (
"current allocations: %zu bytes, peak allocations: %zu bytes, "
290 "current segments: %zu (%zu bytes), peak segments: %zu (%zu bytes)\n",
294 m_currentSegmentSize,
297 std::printf (
"empty-segment trimming passes: %zu\n", m_numTrimEmptySegments);
299 std::printf (
"allocations by type:\n");
302 std::printf (
" %s: %zu\n",
304 m_numAllocationsByType[
i]);
327 std::size_t index =
static_cast<std::size_t
> (
allocType);
332 std::size_t m_numAllocations;
333 std::size_t m_numDeallocations;
334 std::size_t m_numGetSegments;
335 std::size_t m_numFreeSegments;
336 std::size_t m_numTrimEmptySegments;
337 std::size_t m_totalAllocated;
338 std::size_t m_totalDeallocated;
339 std::size_t m_totalGetSegmentSize;
340 std::size_t m_totalFreeSegmentSize;
341 std::size_t m_currentAllocated;
342 std::size_t m_peakAllocated;
343 std::size_t m_currentSegments;
344 std::size_t m_peakSegments;
345 std::size_t m_currentSegmentSize;
346 std::size_t m_peakSegmentSize;
Definition exception.h:39
Definition allocator.h:39
virtual void logDeallocation(void *userPtr, std::size_t userSize)=0
virtual void logError(void *userPtr, MemError_et error, const char *file=__FILE__, int line=__LINE__)=0
virtual void logFreeSegment(void *segment, std::size_t segmentSize)=0
virtual void logAllocation(void *userPtr, std::size_t userSize, MemAllocType_et allocType)=0
virtual void logGetSegment(void *segment, std::size_t segmentSize)=0
virtual void logTrimEmptySegments()=0
virtual void logReallocation(void *userPtr, std::size_t oldUserSize, std::size_t newUserSize)=0
void logAllocation(void *, std::size_t, MemAllocType_et)
Definition logger.h:168
void logFreeSegment(void *, std::size_t)
Definition logger.h:162
NoActionMemLogger()
Definition logger.h:154
void logTrimEmptySegments()
Definition logger.h:165
void logReallocation(void *, std::size_t, std::size_t)
Definition logger.h:171
void logGetSegment(void *, std::size_t)
Definition logger.h:159
void logDeallocation(void *, std::size_t)
Definition logger.h:174
void logError(void *, MemError_et error, const char *file=__FILE__, int line=__LINE__)
Definition logger.h:189
void logGetSegment(void *segment, std::size_t segmentSize)
Definition logger.h:369
void logTrimEmptySegments()
Definition logger.h:362
void logError(void *, MemError_et error, const char *file=__FILE__, int line=__LINE__)
Definition logger.h:462
MemStatistics & getStats()
Definition logger.h:475
void logReallocation(void *userPtr, std::size_t oldUserSize, std::size_t newUserSize)
Definition logger.h:427
void logDeallocation(void *userPtr, std::size_t userSize)
Definition logger.h:450
void logFreeSegment(void *segment, std::size_t segmentSize)
Definition logger.h:394
const MemStatistics & getStats() const
Definition logger.h:482
void logAllocation(void *userPtr, std::size_t userSize, MemAllocType_et allocType)
Definition logger.h:408
Definition allocator.h:29
MemError_et
Definition exception.h:28
MemAllocType_et
Definition logger.h:31
@ MEM_ALLOC_COUNT
Definition logger.h:49
@ MEM_ALLOC_TREE
Definition logger.h:37
@ MEM_ALLOC_BIG
Definition logger.h:43
@ MEM_ALLOC_ARENA
Definition logger.h:41
@ MEM_ALLOC_DV
Definition logger.h:39
@ MEM_ALLOC_SMALL
Definition logger.h:35
@ MEM_ALLOC_NONE
Definition logger.h:33
std::size_t getNumGetSegments() const
Definition logger.h:234
std::size_t getTotalDeallocated() const
Definition logger.h:242
std::size_t getNumAllocations(MemAllocType_et allocType) const
Definition logger.h:227
std::size_t getCurrentSegmentSize() const
Definition logger.h:256
static const char * getAllocationTypeName(MemAllocType_et allocType)
Definition logger.h:316
std::size_t getPeakAllocated() const
Definition logger.h:250
std::size_t getTotalAllocated() const
Definition logger.h:240
std::size_t getTotalGetSegmentSize() const
Definition logger.h:244
std::size_t getCurrentAllocated() const
Definition logger.h:248
std::size_t getNumDeallocations() const
Definition logger.h:232
std::size_t getTotalFreeSegmentSize() const
Definition logger.h:246
std::size_t getNumFreeSegments() const
Definition logger.h:236
std::size_t getCurrentSegments() const
Definition logger.h:252
std::size_t getNumTrimEmptySegments() const
Definition logger.h:238
std::size_t getNumAllocations() const
Definition logger.h:225
std::size_t getPeakSegmentSize() const
Definition logger.h:258
void printStats() const
Definition logger.h:287
std::size_t getPeakSegments() const
Definition logger.h:254