Changes in src/Common/Stats/Heap.cc [c15085d:120a28c3]
- File:
-
- 1 edited
-
src/Common/Stats/Heap.cc (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Common/Stats/Heap.cc
rc15085d r120a28c3 53 53 const size_t passes_size = sizeof(passes) / sizeof(passes[0]); 54 54 size_t passes_cnt = 1; 55 56 StatBlock stacktrace_stats[100];57 size_t stacktrace_stats_count = 0;58 bool stacktrace_stats_enabled = true;59 60 size_t trace[1000];61 const size_t stacktrace_max_depth = sizeof(trace) / sizeof(size_t);62 size_t stacktrace_depth;63 64 size_t new_stacktrace_id(const char * const name) {65 stacktrace_stats[stacktrace_stats_count].name = name;66 return stacktrace_stats_count++;67 }68 69 void stacktrace_push(size_t id) {70 ++stacktrace_depth;71 assertf(stacktrace_depth < stacktrace_max_depth, "Stack trace too deep: increase size of array in Heap.cc");72 trace[stacktrace_depth] = id;73 }74 75 void stacktrace_pop() {76 assertf(stacktrace_depth > 0, "Invalid stack tracing operation: trace is empty");77 --stacktrace_depth;78 }79 55 80 56 void newPass( const char * const name ) { … … 140 116 for(size_t i = 0; i < passes_cnt; i++) { 141 117 print(passes[i], nc, total_mallocs, total_frees, overall_peak); 142 }143 144 print('-', nct);145 std::cerr << std::setw(nc) << "Trace";146 std::cerr << " | Malloc Count | Free Count | Peak Allocs |" << std::endl;147 148 print('-', nct);149 for (size_t i = 0; i < stacktrace_stats_count; i++) {150 print(stacktrace_stats[i], nc, total_mallocs, total_frees, overall_peak);151 118 } 152 119 print('-', nct); … … 221 188 = std::max(passes[passes_cnt - 1].peak_allocs, passes[passes_cnt - 1].n_allocs); 222 189 } 223 224 if ( stacktrace_stats_enabled && stacktrace_depth > 0) {225 stacktrace_stats[trace[stacktrace_depth]].mallocs++;226 }227 190 return __malloc( size ); 228 191 } … … 233 196 passes[passes_cnt - 1].frees++; 234 197 passes[passes_cnt - 1].n_allocs--; 235 }236 if ( stacktrace_stats_enabled && stacktrace_depth > 0) {237 stacktrace_stats[trace[stacktrace_depth]].frees++;238 198 } 239 199 return __free( ptr ); … … 248 208 = std::max(passes[passes_cnt - 1].peak_allocs, passes[passes_cnt - 1].n_allocs); 249 209 } 250 if ( stacktrace_stats_enabled && stacktrace_depth > 0) {251 stacktrace_stats[trace[stacktrace_depth]].mallocs++;252 }253 210 return __calloc( nelem, size ); 254 211 } … … 261 218 passes[passes_cnt - 1].frees++; 262 219 } // if 263 if ( stacktrace_stats_enabled && stacktrace_depth > 0) {264 stacktrace_stats[trace[stacktrace_depth]].mallocs++;265 stacktrace_stats[trace[stacktrace_depth]].frees++;266 }267 220 return s; 268 221 }
Note:
See TracChangeset
for help on using the changeset viewer.