< prev index next >
src/hotspot/share/utilities/events.hpp
Print this page
rev 52913 : 8204551: Event descriptions are truncated in logs
Reviewed-by: coleenp, andrew
@@ -133,37 +133,43 @@
print(out, e.data);
}
};
// A simple wrapper class for fixed size text messages.
-class StringLogMessage : public FormatBuffer<256> {
+template <size_t bufsz>
+class FormatStringLogMessage : public FormatBuffer<bufsz> {
};
+typedef FormatStringLogMessage<256> StringLogMessage;
+typedef FormatStringLogMessage<512> ExtendedStringLogMessage;
// A simple ring buffer of fixed size text messages.
-class StringEventLog : public EventLogBase<StringLogMessage> {
+template <size_t bufsz>
+class FormatStringEventLog : public EventLogBase< FormatStringLogMessage<bufsz> > {
public:
- StringEventLog(const char* name, int count = LogEventsBufferEntries) : EventLogBase<StringLogMessage>(name, count) {}
+ FormatStringEventLog(const char* name, int count = LogEventsBufferEntries) : EventLogBase< FormatStringLogMessage<bufsz> >(name, count) {}
void logv(Thread* thread, const char* format, va_list ap) ATTRIBUTE_PRINTF(3, 0) {
- if (!should_log()) return;
+ if (!this->should_log()) return;
- double timestamp = fetch_timestamp();
- MutexLockerEx ml(&_mutex, Mutex::_no_safepoint_check_flag);
- int index = compute_log_index();
- _records[index].thread = thread;
- _records[index].timestamp = timestamp;
- _records[index].data.printv(format, ap);
+ double timestamp = this->fetch_timestamp();
+ MutexLockerEx ml(&this->_mutex, Mutex::_no_safepoint_check_flag);
+ int index = this->compute_log_index();
+ this->_records[index].thread = thread;
+ this->_records[index].timestamp = timestamp;
+ this->_records[index].data.printv(format, ap);
}
void log(Thread* thread, const char* format, ...) ATTRIBUTE_PRINTF(3, 4) {
va_list ap;
va_start(ap, format);
- logv(thread, format, ap);
+ this->logv(thread, format, ap);
va_end(ap);
}
};
+typedef FormatStringEventLog<256> StringEventLog;
+typedef FormatStringEventLog<512> ExtendedStringEventLog;
class Events : AllStatic {
friend class EventLog;
@@ -174,11 +180,11 @@
// A log for generic messages that aren't well categorized.
static StringEventLog* _messages;
// A log for internal exception related messages, like internal
// throws and implicit exceptions.
- static StringEventLog* _exceptions;
+ static ExtendedStringEventLog* _exceptions;
// Deoptization related messages
static StringEventLog* _deopt_messages;
// Redefinition related messages
@@ -282,10 +288,17 @@
inline void EventLogBase<StringLogMessage>::print(outputStream* out, StringLogMessage& lm) {
out->print_raw(lm);
out->cr();
}
+// Implement a printing routine for the ExtendedStringLogMessage
+template <>
+inline void EventLogBase<ExtendedStringLogMessage>::print(outputStream* out, ExtendedStringLogMessage& lm) {
+ out->print_raw(lm);
+ out->cr();
+}
+
// Place markers for the beginning and end up of a set of events.
// These end up in the default log.
class EventMark : public StackObj {
StringLogMessage _buffer;
< prev index next >