300 guarantee(_protecting_lock->owned_by_self(), "FreeList RACE DETECTED"); |
300 guarantee(_protecting_lock->owned_by_self(), "FreeList RACE DETECTED"); |
301 } |
301 } |
302 #endif |
302 #endif |
303 } |
303 } |
304 #endif |
304 #endif |
|
305 |
|
306 // Print the "label line" for free list stats. |
|
307 void FreeList::print_labels_on(outputStream* st, const char* c) { |
|
308 st->print("%16s\t", c); |
|
309 st->print("%14s\t" "%14s\t" "%14s\t" "%14s\t" "%14s\t" |
|
310 "%14s\t" "%14s\t" "%14s\t" "%14s\t" "%14s\t" "\n", |
|
311 "bfrsurp", "surplus", "desired", "prvSwep", "bfrSwep", |
|
312 "count", "cBirths", "cDeaths", "sBirths", "sDeaths"); |
|
313 } |
|
314 |
|
315 // Print the AllocationStats for the given free list. If the second argument |
|
316 // to the call is a non-null string, it is printed in the first column; |
|
317 // otherwise, if the argument is null (the default), then the size of the |
|
318 // (free list) block is printed in the first column. |
|
319 void FreeList::print_on(outputStream* st, const char* c) const { |
|
320 if (c != NULL) { |
|
321 st->print("%16s", c); |
|
322 } else { |
|
323 st->print(SIZE_FORMAT_W(16), size()); |
|
324 } |
|
325 st->print("\t" |
|
326 SSIZE_FORMAT_W(14) "\t" SSIZE_FORMAT_W(14) "\t" SSIZE_FORMAT_W(14) "\t" SSIZE_FORMAT_W(14) "\t" SSIZE_FORMAT_W(14) "\t" |
|
327 SSIZE_FORMAT_W(14) "\t" SSIZE_FORMAT_W(14) "\t" SSIZE_FORMAT_W(14) "\t" SSIZE_FORMAT_W(14) "\t" SSIZE_FORMAT_W(14) "\n", |
|
328 bfrSurp(), surplus(), desired(), prevSweep(), beforeSweep(), |
|
329 count(), coalBirths(), coalDeaths(), splitBirths(), splitDeaths()); |
|
330 } |