84
85
86 #define HOTSPOT_CLASS_INITIALIZATION_required HOTSPOT_CLASS_INITIALIZATION_REQUIRED
87 #define HOTSPOT_CLASS_INITIALIZATION_recursive HOTSPOT_CLASS_INITIALIZATION_RECURSIVE
88 #define HOTSPOT_CLASS_INITIALIZATION_concurrent HOTSPOT_CLASS_INITIALIZATION_CONCURRENT
89 #define HOTSPOT_CLASS_INITIALIZATION_erroneous HOTSPOT_CLASS_INITIALIZATION_ERRONEOUS
90 #define HOTSPOT_CLASS_INITIALIZATION_super__failed HOTSPOT_CLASS_INITIALIZATION_SUPER_FAILED
91 #define HOTSPOT_CLASS_INITIALIZATION_clinit HOTSPOT_CLASS_INITIALIZATION_CLINIT
92 #define HOTSPOT_CLASS_INITIALIZATION_error HOTSPOT_CLASS_INITIALIZATION_ERROR
93 #define HOTSPOT_CLASS_INITIALIZATION_end HOTSPOT_CLASS_INITIALIZATION_END
94 #define DTRACE_CLASSINIT_PROBE(type, thread_type) \
95 { \
96 char* data = NULL; \
97 int len = 0; \
98 Symbol* clss_name = name(); \
99 if (clss_name != NULL) { \
100 data = (char*)clss_name->bytes(); \
101 len = clss_name->utf8_length(); \
102 } \
103 HOTSPOT_CLASS_INITIALIZATION_##type( \
104 data, len, class_loader(), thread_type); \
105 }
106
107 #define DTRACE_CLASSINIT_PROBE_WAIT(type, thread_type, wait) \
108 { \
109 char* data = NULL; \
110 int len = 0; \
111 Symbol* clss_name = name(); \
112 if (clss_name != NULL) { \
113 data = (char*)clss_name->bytes(); \
114 len = clss_name->utf8_length(); \
115 } \
116 HOTSPOT_CLASS_INITIALIZATION_##type( \
117 data, len, class_loader(), thread_type, wait); \
118 }
119
120 #else // ndef DTRACE_ENABLED
121
122 #define DTRACE_CLASSINIT_PROBE(type, thread_type)
123 #define DTRACE_CLASSINIT_PROBE_WAIT(type, thread_type, wait)
124
125 #endif // ndef DTRACE_ENABLED
126
127 volatile int InstanceKlass::_total_instanceKlass_count = 0;
128
129 static inline bool is_class_loader(const Symbol* class_name,
130 const ClassFileParser& parser) {
131 assert(class_name != NULL, "invariant");
132
133 if (class_name == vmSymbols::java_lang_ClassLoader()) {
134 return true;
135 }
136
137 if (SystemDictionary::ClassLoader_klass_loaded()) {
|
84
85
86 #define HOTSPOT_CLASS_INITIALIZATION_required HOTSPOT_CLASS_INITIALIZATION_REQUIRED
87 #define HOTSPOT_CLASS_INITIALIZATION_recursive HOTSPOT_CLASS_INITIALIZATION_RECURSIVE
88 #define HOTSPOT_CLASS_INITIALIZATION_concurrent HOTSPOT_CLASS_INITIALIZATION_CONCURRENT
89 #define HOTSPOT_CLASS_INITIALIZATION_erroneous HOTSPOT_CLASS_INITIALIZATION_ERRONEOUS
90 #define HOTSPOT_CLASS_INITIALIZATION_super__failed HOTSPOT_CLASS_INITIALIZATION_SUPER_FAILED
91 #define HOTSPOT_CLASS_INITIALIZATION_clinit HOTSPOT_CLASS_INITIALIZATION_CLINIT
92 #define HOTSPOT_CLASS_INITIALIZATION_error HOTSPOT_CLASS_INITIALIZATION_ERROR
93 #define HOTSPOT_CLASS_INITIALIZATION_end HOTSPOT_CLASS_INITIALIZATION_END
94 #define DTRACE_CLASSINIT_PROBE(type, thread_type) \
95 { \
96 char* data = NULL; \
97 int len = 0; \
98 Symbol* clss_name = name(); \
99 if (clss_name != NULL) { \
100 data = (char*)clss_name->bytes(); \
101 len = clss_name->utf8_length(); \
102 } \
103 HOTSPOT_CLASS_INITIALIZATION_##type( \
104 data, len, (void*)class_loader(), thread_type); \
105 }
106
107 #define DTRACE_CLASSINIT_PROBE_WAIT(type, thread_type, wait) \
108 { \
109 char* data = NULL; \
110 int len = 0; \
111 Symbol* clss_name = name(); \
112 if (clss_name != NULL) { \
113 data = (char*)clss_name->bytes(); \
114 len = clss_name->utf8_length(); \
115 } \
116 HOTSPOT_CLASS_INITIALIZATION_##type( \
117 data, len, (void*)class_loader(), thread_type, wait); \
118 }
119
120 #else // ndef DTRACE_ENABLED
121
122 #define DTRACE_CLASSINIT_PROBE(type, thread_type)
123 #define DTRACE_CLASSINIT_PROBE_WAIT(type, thread_type, wait)
124
125 #endif // ndef DTRACE_ENABLED
126
127 volatile int InstanceKlass::_total_instanceKlass_count = 0;
128
129 static inline bool is_class_loader(const Symbol* class_name,
130 const ClassFileParser& parser) {
131 assert(class_name != NULL, "invariant");
132
133 if (class_name == vmSymbols::java_lang_ClassLoader()) {
134 return true;
135 }
136
137 if (SystemDictionary::ClassLoader_klass_loaded()) {
|