Mercurial > hg > graal-compiler
comparison src/share/vm/utilities/events.hpp @ 18041:52b4284cb496
Merge with jdk8u20-b26
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Wed, 15 Oct 2014 16:02:50 +0200 |
parents | 78bbf4d43a14 |
children |
comparison
equal
deleted
inserted
replaced
17606:45d7b2c7029d | 18041:52b4284cb496 |
---|---|
1 /* | 1 /* |
2 * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. | 2 * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * | 4 * |
5 * This code is free software; you can redistribute it and/or modify it | 5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as | 6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
126 void print(outputStream* out, T& e); | 126 void print(outputStream* out, T& e); |
127 | 127 |
128 void print(outputStream* out, EventRecord<T>& e) { | 128 void print(outputStream* out, EventRecord<T>& e) { |
129 out->print("Event: %.3f ", e.timestamp); | 129 out->print("Event: %.3f ", e.timestamp); |
130 if (e.thread != NULL) { | 130 if (e.thread != NULL) { |
131 out->print("Thread " INTPTR_FORMAT " ", e.thread); | 131 out->print("Thread " INTPTR_FORMAT " ", p2i(e.thread)); |
132 } | 132 } |
133 print(out, e.data); | 133 print(out, e.data); |
134 } | 134 } |
135 }; | 135 }; |
136 | 136 |
146 // A simple ring buffer of fixed size text messages. | 146 // A simple ring buffer of fixed size text messages. |
147 class StringEventLog : public EventLogBase<StringLogMessage> { | 147 class StringEventLog : public EventLogBase<StringLogMessage> { |
148 public: | 148 public: |
149 StringEventLog(const char* name, int count = LogEventsBufferEntries) : EventLogBase<StringLogMessage>(name, count) {} | 149 StringEventLog(const char* name, int count = LogEventsBufferEntries) : EventLogBase<StringLogMessage>(name, count) {} |
150 | 150 |
151 void logv(Thread* thread, const char* format, va_list ap) { | 151 void logv(Thread* thread, const char* format, va_list ap) ATTRIBUTE_PRINTF(3, 0) { |
152 if (!should_log()) return; | 152 if (!should_log()) return; |
153 | 153 |
154 double timestamp = fetch_timestamp(); | 154 double timestamp = fetch_timestamp(); |
155 MutexLockerEx ml(&_mutex, Mutex::_no_safepoint_check_flag); | 155 MutexLockerEx ml(&_mutex, Mutex::_no_safepoint_check_flag); |
156 int index = compute_log_index(); | 156 int index = compute_log_index(); |
157 _records[index].thread = thread; | 157 _records[index].thread = thread; |
158 _records[index].timestamp = timestamp; | 158 _records[index].timestamp = timestamp; |
159 _records[index].data.printv(format, ap); | 159 _records[index].data.printv(format, ap); |
160 } | 160 } |
161 | 161 |
162 void log(Thread* thread, const char* format, ...) { | 162 void log(Thread* thread, const char* format, ...) ATTRIBUTE_PRINTF(3, 4) { |
163 va_list ap; | 163 va_list ap; |
164 va_start(ap, format); | 164 va_start(ap, format); |
165 logv(thread, format, ap); | 165 logv(thread, format, ap); |
166 va_end(ap); | 166 va_end(ap); |
167 } | 167 } |
191 | 191 |
192 // Dump all events to the tty | 192 // Dump all events to the tty |
193 static void print(); | 193 static void print(); |
194 | 194 |
195 // Logs a generic message with timestamp and format as printf. | 195 // Logs a generic message with timestamp and format as printf. |
196 static void log(Thread* thread, const char* format, ...); | 196 static void log(Thread* thread, const char* format, ...) ATTRIBUTE_PRINTF(2, 3); |
197 | 197 |
198 // Log exception related message | 198 // Log exception related message |
199 static void log_exception(Thread* thread, const char* format, ...); | 199 static void log_exception(Thread* thread, const char* format, ...) ATTRIBUTE_PRINTF(2, 3); |
200 | 200 |
201 static void log_deopt_message(Thread* thread, const char* format, ...); | 201 static void log_deopt_message(Thread* thread, const char* format, ...) ATTRIBUTE_PRINTF(2, 3); |
202 | 202 |
203 // Register default loggers | 203 // Register default loggers |
204 static void init(); | 204 static void init(); |
205 }; | 205 }; |
206 | |
207 | 206 |
208 inline void Events::log(Thread* thread, const char* format, ...) { | 207 inline void Events::log(Thread* thread, const char* format, ...) { |
209 if (LogEvents) { | 208 if (LogEvents) { |
210 va_list ap; | 209 va_list ap; |
211 va_start(ap, format); | 210 va_start(ap, format); |
281 class EventMark : public StackObj { | 280 class EventMark : public StackObj { |
282 StringLogMessage _buffer; | 281 StringLogMessage _buffer; |
283 | 282 |
284 public: | 283 public: |
285 // log a begin event, format as printf | 284 // log a begin event, format as printf |
286 EventMark(const char* format, ...); | 285 EventMark(const char* format, ...) ATTRIBUTE_PRINTF(2, 3); |
287 // log an end event | 286 // log an end event |
288 ~EventMark(); | 287 ~EventMark(); |
289 }; | 288 }; |
290 | 289 |
291 #endif // SHARE_VM_UTILITIES_EVENTS_HPP | 290 #endif // SHARE_VM_UTILITIES_EVENTS_HPP |