src/share/vm/classfile/systemDictionary.cpp
Print this page
rev 12364 : 8170672: Event-based tracing to support classloader instances
Reviewed-by:
@@ -619,39 +619,32 @@
}
}
return (nh);
}
-// utility function for class load event
static void post_class_load_event(const Ticks& start_time,
instanceKlassHandle k,
- Handle initiating_loader) {
+ const ClassLoaderData* init_cld) {
#if INCLUDE_TRACE
EventClassLoad event(UNTIMED);
if (event.should_commit()) {
event.set_starttime(start_time);
event.set_loadedClass(k());
- oop defining_class_loader = k->class_loader();
- event.set_definingClassLoader(defining_class_loader != NULL ?
- defining_class_loader->klass() : (Klass*)NULL);
- oop class_loader = initiating_loader.is_null() ? (oop)NULL : initiating_loader();
- event.set_initiatingClassLoader(class_loader != NULL ?
- class_loader->klass() : (Klass*)NULL);
+ event.set_definingClassLoader(k->class_loader_data());
+ event.set_initiatingClassLoader(init_cld);
event.commit();
}
#endif // INCLUDE_TRACE
}
-// utility function for class define event
-static void class_define_event(instanceKlassHandle k) {
+static void class_define_event(instanceKlassHandle k,
+ const ClassLoaderData* def_cld) {
#if INCLUDE_TRACE
- EventClassDefine event(UNTIMED);
+ EventClassDefine event;
if (event.should_commit()) {
event.set_definedClass(k());
- oop defining_class_loader = k->class_loader();
- event.set_definingClassLoader(defining_class_loader != NULL ?
- defining_class_loader->klass() : (Klass*)NULL);
+ event.set_definingClassLoader(def_cld);
event.commit();
}
#endif // INCLUDE_TRACE
}
@@ -905,11 +898,11 @@
if (HAS_PENDING_EXCEPTION || k.is_null()) {
return NULL;
}
- post_class_load_event(class_load_start_time, k, class_loader);
+ post_class_load_event(class_load_start_time, k, loader_data);
#ifdef ASSERT
{
ClassLoaderData* loader_data = k->class_loader_data();
MutexLocker mu(SystemDictionary_lock, THREAD);
@@ -1088,11 +1081,11 @@
if (JvmtiExport::should_post_class_load()) {
assert(THREAD->is_Java_thread(), "thread->is_Java_thread()");
JvmtiExport::post_class_load((JavaThread *) THREAD, k());
}
- post_class_load_event(class_load_start_time, k, class_loader);
+ post_class_load_event(class_load_start_time, k, loader_data);
}
assert(host_klass != NULL || NULL == cp_patches,
"cp_patches only found with host_klass");
return k();
@@ -1639,11 +1632,11 @@
if (JvmtiExport::should_post_class_load()) {
assert(THREAD->is_Java_thread(), "thread->is_Java_thread()");
JvmtiExport::post_class_load((JavaThread *) THREAD, k());
}
- class_define_event(k);
+ class_define_event(k, loader_data);
}
// Support parallel classloading
// All parallel class loaders, including bootstrap classloader
// lock a placeholder entry for this class/class_loader pair