mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 14:54:52 +02:00
8170672: Event-based tracing to support classloader instances
Reviewed-by: hseigel, egahlin
This commit is contained in:
parent
8bf0437430
commit
6a685f1d63
13 changed files with 95 additions and 59 deletions
|
@ -621,35 +621,28 @@ instanceKlassHandle SystemDictionary::handle_parallel_super_load(
|
|||
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
|
||||
|
@ -907,7 +900,7 @@ Klass* SystemDictionary::resolve_instance_class_or_null(Symbol* name,
|
|||
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
|
||||
{
|
||||
|
@ -1090,7 +1083,7 @@ Klass* SystemDictionary::parse_stream(Symbol* class_name,
|
|||
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");
|
||||
|
@ -1641,7 +1634,7 @@ void SystemDictionary::define_instance_class(instanceKlassHandle k, TRAPS) {
|
|||
JvmtiExport::post_class_load((JavaThread *) THREAD, k());
|
||||
|
||||
}
|
||||
class_define_event(k);
|
||||
class_define_event(k, loader_data);
|
||||
}
|
||||
|
||||
// Support parallel classloading
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue