--- old/src/share/vm/logging/logTagSet.hpp 2015-09-15 11:20:12.270623654 +0200 +++ new/src/share/vm/logging/logTagSet.hpp 2015-09-15 11:20:12.186623651 +0200 @@ -23,6 +23,7 @@ */ #ifndef SHARE_VM_LOGGING_LOGTAGSET_HPP #define SHARE_VM_LOGGING_LOGTAGSET_HPP + #include "logging/logDecorators.hpp" #include "logging/logLevel.hpp" #include "logging/logOutputList.hpp" @@ -32,7 +33,7 @@ // 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; @@ -87,8 +88,9 @@ void log(LogLevelType level, const char* msg); }; -template -class LogTagSetMapping { +template +class LogTagSetMapping : public AllStatic { private: static LogTagSet _tagset; @@ -98,7 +100,9 @@ } }; +// 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 LogTagSet LogTagSetMapping::_tagset(T0, T1, T2, T3, T4); -#endif +#endif // SHARE_VM_LOGGING_LOGTAGSET_HPP