< prev index next >
src/share/vm/logging/logPrefix.hpp
Print this page
@@ -31,27 +31,55 @@
// A prefix consists of a format string and a value or callback. Prefixes are added
// after the decorations but before the log message.
//
// List of prefixes for specific tags and/or tagsets.
// Syntax: LOG_PREFIX(<printf format>, <value/callback for value>, LOG_TAGS(<chosen log tags>))
-#define LOG_PREFIX_LIST // Currently unused/empty
+#define LOG_PREFIX_LIST \
+ LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc)) \
+ LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, age)) \
+ LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, alloc)) \
+ LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, barrier)) \
+ LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, compaction)) \
+ LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, compaction, phases)) \
+ LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, cpu)) \
+ LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, ergo)) \
+ LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, ergo, conc)) \
+ LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, ergo, cset)) \
+ LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, ergo, heap)) \
+ LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, heap)) \
+ LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, freelist)) \
+ LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, liveness)) \
+ LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, metaspace)) \
+ LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, phases)) \
+ LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, phases, start)) \
+ LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, plab)) \
+ LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, region)) \
+ LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, remset)) \
+ LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, ref)) \
+ LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, ref, start)) \
+ LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, start)) \
+ LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, task)) \
+ LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, task, start)) \
+ LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, task, stats)) \
+ LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, task, time)) \
+ LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, tlab))
// The empty prefix, used when there's no prefix defined.
template <LogTagType T0, LogTagType T1, LogTagType T2, LogTagType T3, LogTagType T4, LogTagType GuardTag = LogTag::__NO_TAG>
struct LogPrefix : public AllStatic {
STATIC_ASSERT(GuardTag == LogTag::__NO_TAG);
static size_t prefix(char* buf, size_t len) {
return 0;
}
};
-#define LOG_PREFIX(fmt, fn, ...) \
+#define LOG_PREFIX(fn, ...) \
template <> struct LogPrefix<__VA_ARGS__> { \
static size_t prefix(char* buf, size_t len) { \
- int ret = jio_snprintf(buf, len, fmt, fn); \
- assert(ret >= 0, \
- "Failed to prefix log message using prefix ('%s', '%s'), log buffer too small?", fmt, #fn); \
+ DEBUG_ONLY(buf[0] = '\0'); \
+ size_t ret = fn(buf, len); \
+ assert(ret == strlen(buf), "Length mismatch ret (" SIZE_FORMAT ") != buf length (" SIZE_FORMAT ")", ret, strlen(buf)); \
return ret; \
} \
};
LOG_PREFIX_LIST
#undef LOG_PREFIX
< prev index next >