< prev index next >

src/share/vm/logging/logPrefix.hpp

Print this page
rev 10178 : imported patch 8145934


  69   LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, task, start)) \
  70   LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, task, stats)) \
  71   LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, task, time)) \
  72   LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, tlab))
  73 
  74 
  75 // The empty prefix, used when there's no prefix defined.
  76 template <LogTagType T0, LogTagType T1, LogTagType T2, LogTagType T3, LogTagType T4, LogTagType GuardTag = LogTag::__NO_TAG>
  77 struct LogPrefix : public AllStatic {
  78   STATIC_ASSERT(GuardTag == LogTag::__NO_TAG);
  79   static size_t prefix(char* buf, size_t len) {
  80     return 0;
  81   }
  82 };
  83 
  84 #define LOG_PREFIX(fn, ...) \
  85 template <> struct LogPrefix<__VA_ARGS__> { \
  86   static size_t prefix(char* buf, size_t len) { \
  87     DEBUG_ONLY(buf[0] = '\0';) \
  88     size_t ret = fn(buf, len); \
  89     assert(ret == strlen(buf), "Length mismatch ret (" SIZE_FORMAT ") != buf length (" SIZE_FORMAT ")", ret, strlen(buf)); \




  90     return ret; \
  91   } \
  92 };
  93 LOG_PREFIX_LIST
  94 #undef LOG_PREFIX
  95 
  96 #endif // SHARE_VM_LOGGING_LOGPREFIX_HPP


  69   LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, task, start)) \
  70   LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, task, stats)) \
  71   LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, task, time)) \
  72   LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, tlab))
  73 
  74 
  75 // The empty prefix, used when there's no prefix defined.
  76 template <LogTagType T0, LogTagType T1, LogTagType T2, LogTagType T3, LogTagType T4, LogTagType GuardTag = LogTag::__NO_TAG>
  77 struct LogPrefix : public AllStatic {
  78   STATIC_ASSERT(GuardTag == LogTag::__NO_TAG);
  79   static size_t prefix(char* buf, size_t len) {
  80     return 0;
  81   }
  82 };
  83 
  84 #define LOG_PREFIX(fn, ...) \
  85 template <> struct LogPrefix<__VA_ARGS__> { \
  86   static size_t prefix(char* buf, size_t len) { \
  87     DEBUG_ONLY(buf[0] = '\0';) \
  88     size_t ret = fn(buf, len); \
  89     /* Either prefix did fit (strlen(buf) == ret && ret < len) */ \
  90     /* or the prefix didn't fit in buffer (ret > len && strlen(buf) < len) */ \
  91     assert(strlen(buf) < len, "Buffer overrun by prefix function."); \
  92     assert(strlen(buf) == ret || ret >= len, "Prefix function should return length of prefix written," \
  93            " or the intended length of prefix if the buffer was too small."); \
  94     return ret; \
  95   } \
  96 };
  97 LOG_PREFIX_LIST
  98 #undef LOG_PREFIX
  99 
 100 #endif // SHARE_VM_LOGGING_LOGPREFIX_HPP
< prev index next >