< prev index next >
src/share/vm/logging/logTagSet.hpp
Print this page
rev 8933 : 8046148.01
@@ -21,20 +21,21 @@
* questions.
*
*/
#ifndef SHARE_VM_LOGGING_LOGTAGSET_HPP
#define SHARE_VM_LOGGING_LOGTAGSET_HPP
+
#include "logging/logDecorators.hpp"
#include "logging/logLevel.hpp"
#include "logging/logOutputList.hpp"
#include "logging/logTag.hpp"
#include "utilities/globalDefinitions.hpp"
// The tagset represents a combination of tags that occur in a log call somewhere.
// Tagsets are created automatically by the LogTagSetMappings and should never be
// instantiated directly somewhere else.
-class LogTagSet {
+class LogTagSet VALUE_OBJ_CLASS_SPEC {
private:
static LogTagSet* _list;
static size_t _ntagsets;
LogTagSet* const _next;
@@ -85,20 +86,23 @@
bool has_output(const LogOutput* output);
bool is_level(LogLevelType level);
void log(LogLevelType level, const char* msg);
};
-template <LogTagType T0, LogTagType T1 = LogTag::__NO_TAG, LogTagType T2 = LogTag::__NO_TAG, LogTagType T3 = LogTag::__NO_TAG, LogTagType T4 = LogTag::__NO_TAG>
-class LogTagSetMapping {
+template <LogTagType T0, LogTagType T1 = LogTag::__NO_TAG, LogTagType T2 = LogTag::__NO_TAG,
+ LogTagType T3 = LogTag::__NO_TAG, LogTagType T4 = LogTag::__NO_TAG>
+class LogTagSetMapping : public AllStatic {
private:
static LogTagSet _tagset;
public:
static LogTagSet& tagset() {
return _tagset;
}
};
+// Instantiate the static field _tagset for all tagsets that are used for logging somewhere.
+// (This must be done here rather than the .cpp file because it's a template.)
template <LogTagType T0, LogTagType T1, LogTagType T2, LogTagType T3, LogTagType T4>
LogTagSet LogTagSetMapping<T0, T1, T2, T3, T4>::_tagset(T0, T1, T2, T3, T4);
-#endif
+#endif // SHARE_VM_LOGGING_LOGTAGSET_HPP
< prev index next >