--- old/src/share/vm/logging/logTag.hpp 2016-01-11 11:51:31.915675577 -0500 +++ new/src/share/vm/logging/logTag.hpp 2016-01-11 11:51:31.734934042 -0500 @@ -89,10 +89,14 @@ // If too many tags are given, a static assert in the log class will fail. #define LOG_TAGS_EXPANDED(T0, T1, T2, T3, T4, T5, ...) PREFIX_LOG_TAG(T0), PREFIX_LOG_TAG(T1), PREFIX_LOG_TAG(T2), \ PREFIX_LOG_TAG(T3), PREFIX_LOG_TAG(T4), PREFIX_LOG_TAG(T5) +// Generate a comma separated list of the first 6 tags. +#define VAR_LOG_TAGS_EXPANDED(V0, V1, V2, V3, V4, V5, ...) V0, V1, V2, V3, V4, V5 // The EXPAND_VARARGS macro is required for MSVC, or it will resolve the LOG_TAGS_EXPANDED macro incorrectly. #define EXPAND_VARARGS(x) x +#define VAR_LOG_TAGS(...) EXPAND_VARARGS(VAR_LOG_TAGS_EXPANDED(__VA_ARGS__, PREFIX_LOG_TAG(_NO_TAG), PREFIX_LOG_TAG(_NO_TAG), \ + PREFIX_LOG_TAG(_NO_TAG), PREFIX_LOG_TAG(_NO_TAG), \ + PREFIX_LOG_TAG(_NO_TAG), PREFIX_LOG_TAG(_NO_TAG))) #define LOG_TAGS(...) EXPAND_VARARGS(LOG_TAGS_EXPANDED(__VA_ARGS__, _NO_TAG, _NO_TAG, _NO_TAG, _NO_TAG, _NO_TAG, _NO_TAG)) - // Log tags are used to classify log messages. // Each log message can be assigned between 1 to LogTag::MaxTags number of tags. // Specifying multiple tags for a log message means that only outputs configured