--- old/src/share/vm/gc/g1/workerDataArray.cpp 2016-03-30 16:04:37.956789011 +0200 +++ new/src/share/vm/gc/g1/workerDataArray.cpp 2016-03-30 16:04:37.828789006 +0200 @@ -27,22 +27,28 @@ #include "utilities/ostream.hpp" template <> -void WorkerDataArray::WDAPrinter::summary(outputStream* out, const char* title, double min, double avg, double max, double diff, double sum, bool print_sum) { - out->print("%-25s Min: %4.1lf, Avg: %4.1lf, Max: %4.1lf, Diff: %4.1lf", title, min * MILLIUNITS, avg * MILLIUNITS, max * MILLIUNITS, diff* MILLIUNITS); +size_t WorkerDataArray::uninitialized() { + return (size_t)-1; +} + +template <> +double WorkerDataArray::uninitialized() { + return -1.0; +} + +template <> +void WorkerDataArray::WDAPrinter::summary(outputStream* out, double min, double avg, double max, double diff, double sum, bool print_sum) { + out->print(" Min: %4.1lf, Avg: %4.1lf, Max: %4.1lf, Diff: %4.1lf", min * MILLIUNITS, avg * MILLIUNITS, max * MILLIUNITS, diff* MILLIUNITS); if (print_sum) { - out->print_cr(", Sum: %4.1lf", sum * MILLIUNITS); - } else { - out->cr(); + out->print(", Sum: %4.1lf", sum * MILLIUNITS); } } template <> -void WorkerDataArray::WDAPrinter::summary(outputStream* out, const char* title, size_t min, double avg, size_t max, size_t diff, size_t sum, bool print_sum) { - out->print("%-25s Min: " SIZE_FORMAT ", Avg: %4.1lf, Max: " SIZE_FORMAT ", Diff: " SIZE_FORMAT, title, min, avg, max, diff); +void WorkerDataArray::WDAPrinter::summary(outputStream* out, size_t min, double avg, size_t max, size_t diff, size_t sum, bool print_sum) { + out->print(" Min: " SIZE_FORMAT ", Avg: %4.1lf, Max: " SIZE_FORMAT ", Diff: " SIZE_FORMAT, min, avg, max, diff); if (print_sum) { - out->print_cr(", Sum: " SIZE_FORMAT, sum); - } else { - out->cr(); + out->print(", Sum: " SIZE_FORMAT, sum); } } @@ -54,7 +60,7 @@ if (value != phase->uninitialized()) { out->print(" %4.1lf", phase->get(i) * 1000.0); } else { - out->print(" -"); + out->print(" -"); } } out->cr(); @@ -68,7 +74,7 @@ if (value != phase->uninitialized()) { out->print(" " SIZE_FORMAT, phase->get(i)); } else { - out->print(" -"); + out->print(" -"); } } out->cr(); @@ -106,7 +112,7 @@ void WorkerDataArray_test_with_uninitialized() { const uint length = 3; - const size_t uninitilized = (size_t)-1; + const size_t uninitilized = WorkerDataArray::uninitialized(); WorkerDataArray array(length, "Test array"); const size_t expected[length] = {5, uninitilized, 7}; @@ -123,7 +129,7 @@ void WorkerDataArray_test_uninitialized() { const uint length = 3; - const size_t uninitilized = (size_t)-1; + const size_t uninitilized = WorkerDataArray::uninitialized(); WorkerDataArray array(length, "Test array"); for (uint i = 0; i < length; i++) { @@ -136,7 +142,7 @@ void WorkerDataArray_test_print_summary() { const uint length = 4; - const size_t uninitilized = (size_t)-1; + const size_t uninitilized = WorkerDataArray::uninitialized(); WorkerDataArray array(length, "Test array"); const size_t expected[length] = {5, uninitilized, 7, uninitilized}; @@ -148,7 +154,27 @@ stringStream out; array.print_summary_on(&out); const char* out_string = out.as_string(); - const char* expected_string = "Test array Min: 5, Avg: 6,0, Max: 7, Diff: 2, Sum: 12\n"; + const char* expected_string = "Test array Min: 5, Avg: 6,0, Max: 7, Diff: 2, Sum: 12, Workers: 2\n"; + const size_t expected_len = strlen(expected_string); + assert(expected_len == strlen(out_string), "Wrong string length, expected " SIZE_FORMAT " but got " SIZE_FORMAT, expected_len, strlen(out_string)); + assert(strncmp(expected_string, out_string, expected_len) == 0, "Expected '%s' but got: '%s'", expected_string, out_string); +} + +void WorkerDataArray_test_print_summary_skipped() { + const uint length = 2; + const size_t uninitilized = WorkerDataArray::uninitialized(); + WorkerDataArray array(length, "Test array"); + + const size_t expected[length] = {uninitilized, uninitilized}; + for (uint i = 0; i < length; i++) { + array.set(i, expected[i]); + } + + ResourceMark rm; + stringStream out; + array.print_summary_on(&out); + const char* out_string = out.as_string(); + const char* expected_string = "Test array skipped\n"; const size_t expected_len = strlen(expected_string); assert(expected_len == strlen(out_string), "Wrong string length, expected " SIZE_FORMAT " but got " SIZE_FORMAT, expected_len, strlen(out_string)); assert(strncmp(expected_string, out_string, expected_len) == 0, "Expected '%s' but got: '%s'", expected_string, out_string); @@ -156,7 +182,7 @@ void WorkerDataArray_test_print_details() { const uint length = 4; - const size_t uninitilized = (size_t)-1; + const size_t uninitilized = WorkerDataArray::uninitialized(); WorkerDataArray array(length, "Test array"); const size_t expected[length] = {5, uninitilized, 7, uninitilized}; @@ -168,7 +194,7 @@ stringStream out; array.print_details_on(&out); const char* out_string = out.as_string(); - const char* expected_string = " 5 - 7 -\n"; + const char* expected_string = " 5 - 7 -\n"; const size_t expected_len = strlen(expected_string); assert(expected_len == strlen(out_string), "Wrong string length, expected " SIZE_FORMAT " but got " SIZE_FORMAT, expected_len, strlen(out_string)); assert(strncmp(expected_string, out_string, expected_len) == 0, "Expected '%s' but got: '%s'", expected_string, out_string); @@ -179,6 +205,7 @@ WorkerDataArray_test_with_uninitialized(); WorkerDataArray_test_uninitialized(); WorkerDataArray_test_print_summary(); + WorkerDataArray_test_print_summary_skipped(); WorkerDataArray_test_print_details(); }