8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 #include "precompiled.hpp"
26 #include "compiler/compileLog.hpp"
27 #include "gc/shared/gcId.hpp"
28 #include "oops/oop.inline.hpp"
29 #include "runtime/arguments.hpp"
30 #include "runtime/os.hpp"
31 #include "runtime/vm_version.hpp"
32 #include "utilities/defaultStream.hpp"
33 #include "utilities/macros.hpp"
34 #include "utilities/ostream.hpp"
35 #include "utilities/top.hpp"
36 #include "utilities/xmlstream.hpp"
37
38 extern "C" void jio_print(const char* s); // Declarationtion of jvm method
39
40 outputStream::outputStream(int width) {
41 _width = width;
42 _position = 0;
43 _newlines = 0;
44 _precount = 0;
45 _indentation = 0;
46 }
47
221 void outputStream::date_stamp(bool guard,
222 const char* prefix,
223 const char* suffix) {
224 if (!guard) {
225 return;
226 }
227 print_raw(prefix);
228 static const char error_time[] = "yyyy-mm-ddThh:mm:ss.mmm+zzzz";
229 static const int buffer_length = 32;
230 char buffer[buffer_length];
231 const char* iso8601_result = os::iso8601_time(buffer, buffer_length);
232 if (iso8601_result != NULL) {
233 print_raw(buffer);
234 } else {
235 print_raw(error_time);
236 }
237 print_raw(suffix);
238 return;
239 }
240
241 void outputStream::gclog_stamp(const GCId& gc_id) {
242 date_stamp(PrintGCDateStamps);
243 stamp(PrintGCTimeStamps);
244 if (PrintGCID) {
245 print("#%u: ", gc_id.id());
246 }
247 }
248
249 outputStream& outputStream::indent() {
250 while (_position < _indentation) sp();
251 return *this;
252 }
253
254 void outputStream::print_jlong(jlong value) {
255 print(JLONG_FORMAT, value);
256 }
257
258 void outputStream::print_julong(julong value) {
259 print(JULONG_FORMAT, value);
260 }
261
262 /**
263 * This prints out hex data in a 'windbg' or 'xxd' form, where each line is:
264 * <hex-address>: 8 * <hex-halfword> <ascii translation (optional)>
265 * example:
|
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 #include "precompiled.hpp"
26 #include "compiler/compileLog.hpp"
27 #include "gc/shared/gcId.hpp"
28 #include "gc/shared/gcId.hpp"
29 #include "oops/oop.inline.hpp"
30 #include "runtime/arguments.hpp"
31 #include "runtime/os.hpp"
32 #include "runtime/vm_version.hpp"
33 #include "utilities/defaultStream.hpp"
34 #include "utilities/macros.hpp"
35 #include "utilities/ostream.hpp"
36 #include "utilities/top.hpp"
37 #include "utilities/xmlstream.hpp"
38
39 extern "C" void jio_print(const char* s); // Declarationtion of jvm method
40
41 outputStream::outputStream(int width) {
42 _width = width;
43 _position = 0;
44 _newlines = 0;
45 _precount = 0;
46 _indentation = 0;
47 }
48
222 void outputStream::date_stamp(bool guard,
223 const char* prefix,
224 const char* suffix) {
225 if (!guard) {
226 return;
227 }
228 print_raw(prefix);
229 static const char error_time[] = "yyyy-mm-ddThh:mm:ss.mmm+zzzz";
230 static const int buffer_length = 32;
231 char buffer[buffer_length];
232 const char* iso8601_result = os::iso8601_time(buffer, buffer_length);
233 if (iso8601_result != NULL) {
234 print_raw(buffer);
235 } else {
236 print_raw(error_time);
237 }
238 print_raw(suffix);
239 return;
240 }
241
242 void outputStream::gclog_stamp() {
243 date_stamp(PrintGCDateStamps);
244 stamp(PrintGCTimeStamps);
245 if (PrintGCID) {
246 print("#%u: ", GCId::current());
247 }
248 }
249
250 outputStream& outputStream::indent() {
251 while (_position < _indentation) sp();
252 return *this;
253 }
254
255 void outputStream::print_jlong(jlong value) {
256 print(JLONG_FORMAT, value);
257 }
258
259 void outputStream::print_julong(julong value) {
260 print(JULONG_FORMAT, value);
261 }
262
263 /**
264 * This prints out hex data in a 'windbg' or 'xxd' form, where each line is:
265 * <hex-address>: 8 * <hex-halfword> <ascii translation (optional)>
266 * example:
|