Mercurial > hg > truffle
comparison src/share/vm/gc_implementation/g1/g1GCPhaseTimes.cpp @ 17937:78bbf4d43a14
8037816: Fix for 8036122 breaks build with Xcode5/clang
8043029: Change 8037816 breaks HS build with older GCC versions which don't support diagnostic pragmas
8043164: Format warning in traceStream.hpp
Summary: Backport of main fix + two corrections, enables clang compilation, turns on format attributes, corrects/mutes warnings
Reviewed-by: kvn, coleenp, iveresov, twisti
author | drchase |
---|---|
date | Thu, 22 May 2014 15:52:41 -0400 |
parents | 8847586c9037 |
children | 570cb6369f17 |
comparison
equal
deleted
inserted
replaced
17935:7384f6a12fc1 | 17937:78bbf4d43a14 |
---|---|
37 static const int INDENT_CHARS = 3; | 37 static const int INDENT_CHARS = 3; |
38 char _buffer[BUFFER_LEN]; | 38 char _buffer[BUFFER_LEN]; |
39 int _indent_level; | 39 int _indent_level; |
40 int _cur; | 40 int _cur; |
41 | 41 |
42 void vappend(const char* format, va_list ap) { | 42 void vappend(const char* format, va_list ap) ATTRIBUTE_PRINTF(2, 0) { |
43 int res = vsnprintf(&_buffer[_cur], BUFFER_LEN - _cur, format, ap); | 43 int res = vsnprintf(&_buffer[_cur], BUFFER_LEN - _cur, format, ap); |
44 if (res != -1) { | 44 if (res != -1) { |
45 _cur += res; | 45 _cur += res; |
46 } else { | 46 } else { |
47 DEBUG_ONLY(warning("buffer too small in LineBuffer");) | 47 DEBUG_ONLY(warning("buffer too small in LineBuffer");) |
61 ~LineBuffer() { | 61 ~LineBuffer() { |
62 assert(_cur == _indent_level * INDENT_CHARS, "pending data in buffer - append_and_print_cr() not called?"); | 62 assert(_cur == _indent_level * INDENT_CHARS, "pending data in buffer - append_and_print_cr() not called?"); |
63 } | 63 } |
64 #endif | 64 #endif |
65 | 65 |
66 void append(const char* format, ...) { | 66 void append(const char* format, ...) ATTRIBUTE_PRINTF(2, 3) { |
67 va_list ap; | 67 va_list ap; |
68 va_start(ap, format); | 68 va_start(ap, format); |
69 vappend(format, ap); | 69 vappend(format, ap); |
70 va_end(ap); | 70 va_end(ap); |
71 } | 71 } |
72 | 72 |
73 void append_and_print_cr(const char* format, ...) { | 73 void append_and_print_cr(const char* format, ...) ATTRIBUTE_PRINTF(2, 3) { |
74 va_list ap; | 74 va_list ap; |
75 va_start(ap, format); | 75 va_start(ap, format); |
76 vappend(format, ap); | 76 vappend(format, ap); |
77 va_end(ap); | 77 va_end(ap); |
78 gclog_or_tty->print_cr("%s", _buffer); | 78 gclog_or_tty->print_cr("%s", _buffer); |
79 _cur = _indent_level * INDENT_CHARS; | 79 _cur = _indent_level * INDENT_CHARS; |
80 } | 80 } |
81 }; | 81 }; |
82 | 82 |
83 PRAGMA_DIAG_PUSH | |
84 PRAGMA_FORMAT_NONLITERAL_IGNORED | |
83 template <class T> | 85 template <class T> |
84 void WorkerDataArray<T>::print(int level, const char* title) { | 86 void WorkerDataArray<T>::print(int level, const char* title) { |
85 if (_length == 1) { | 87 if (_length == 1) { |
86 // No need for min, max, average and sum for only one worker | 88 // No need for min, max, average and sum for only one worker |
87 LineBuffer buf(level); | 89 LineBuffer buf(level); |
107 buf.append(_print_format, val); | 109 buf.append(_print_format, val); |
108 } | 110 } |
109 } | 111 } |
110 | 112 |
111 if (G1Log::finest()) { | 113 if (G1Log::finest()) { |
112 buf.append_and_print_cr(""); | 114 buf.append_and_print_cr("%s", ""); |
113 } | 115 } |
114 | 116 |
115 double avg = (double)sum / (double)_length; | 117 double avg = (double)sum / (double)_length; |
116 buf.append(" Min: "); | 118 buf.append(" Min: "); |
117 buf.append(_print_format, min); | 119 buf.append(_print_format, min); |
127 buf.append(", Sum: "); | 129 buf.append(", Sum: "); |
128 buf.append(_print_format, sum); | 130 buf.append(_print_format, sum); |
129 } | 131 } |
130 buf.append_and_print_cr("]"); | 132 buf.append_and_print_cr("]"); |
131 } | 133 } |
134 PRAGMA_DIAG_POP | |
132 | 135 |
133 #ifndef PRODUCT | 136 #ifndef PRODUCT |
134 | 137 |
135 template <> const int WorkerDataArray<int>::_uninitialized = -1; | 138 template <> const int WorkerDataArray<int>::_uninitialized = -1; |
136 template <> const double WorkerDataArray<double>::_uninitialized = -1.0; | 139 template <> const double WorkerDataArray<double>::_uninitialized = -1.0; |