src/share/vm/classfile/systemDictionary.cpp
Print this page
rev 13113 : 8182651: Add TRACE_ONLY conditional macro to support more fine-grained INCLUDE_TRACE programming
Reviewed-by:
@@ -70,13 +70,11 @@
#include "runtime/mutexLocker.hpp"
#include "runtime/orderAccess.inline.hpp"
#include "runtime/signature.hpp"
#include "services/classLoadingService.hpp"
#include "services/threadService.hpp"
-#include "trace/traceMacros.hpp"
#include "utilities/macros.hpp"
-#include "utilities/ticks.hpp"
#if INCLUDE_CDS
#include "classfile/sharedClassUtil.hpp"
#include "classfile/systemDictionaryShared.hpp"
#endif
#if INCLUDE_JVMCI
@@ -613,36 +611,35 @@
}
}
return NULL;
}
-static void post_class_load_event(const Ticks& start_time,
- InstanceKlass* k,
- const ClassLoaderData* init_cld) {
#if INCLUDE_TRACE
- EventClassLoad event(UNTIMED);
- if (event.should_commit()) {
- event.set_starttime(start_time);
- event.set_loadedClass(k);
- event.set_definingClassLoader(k->class_loader_data());
- event.set_initiatingClassLoader(init_cld);
- event.commit();
+static void post_class_load_event(EventClassLoad* event,
+ const InstanceKlass* k,
+ const ClassLoaderData* init_cld) {
+ assert(event != NULL, "invariant");
+ assert(k != NULL, "invariant");
+
+ if (event->should_commit()) {
+ event->set_loadedClass(k);
+ //event->set_definingClassLoader(k->class_loader_data());
+ event->set_initiatingClassLoader(init_cld);
+ event->commit();
}
-#endif // INCLUDE_TRACE
}
-static void class_define_event(InstanceKlass* k,
+static void post_class_define_event(const InstanceKlass* k,
const ClassLoaderData* def_cld) {
-#if INCLUDE_TRACE
EventClassDefine event;
if (event.should_commit()) {
event.set_definedClass(k);
event.set_definingClassLoader(def_cld);
event.commit();
}
-#endif // INCLUDE_TRACE
}
+#endif // INCLUDE_TRACE
// Be careful when modifying this code: once you have run
// placeholders()->find_and_add(PlaceholderTable::LOAD_INSTANCE),
// you need to find_and_remove it before returning.
// So be careful to not exit with a CHECK_ macro betweeen these calls.
@@ -651,11 +648,11 @@
Handle protection_domain,
TRAPS) {
assert(name != NULL && !FieldType::is_array(name) &&
!FieldType::is_obj(name), "invalid class name");
- Ticks class_load_start_time = Ticks::now();
+ TRACE_ONLY(EventClassLoad ev;)
HandleMark hm(THREAD);
// Fix for 4474172; see evaluation for more details
class_loader = Handle(THREAD, java_lang_ClassLoader::non_reflection_class_loader(class_loader()));
@@ -897,11 +894,11 @@
if (HAS_PENDING_EXCEPTION || k == NULL) {
return NULL;
}
- post_class_load_event(class_load_start_time, k, loader_data);
+ TRACE_ONLY(post_class_load_event(&ev, k, loader_data);)
#ifdef ASSERT
{
ClassLoaderData* loader_data = k->class_loader_data();
MutexLocker mu(SystemDictionary_lock, THREAD);
@@ -1020,12 +1017,11 @@
Handle protection_domain,
ClassFileStream* st,
const InstanceKlass* host_klass,
GrowableArray<Handle>* cp_patches,
TRAPS) {
-
- Ticks class_load_start_time = Ticks::now();
+ TRACE_ONLY(EventClassLoad ev;)
ClassLoaderData* loader_data;
if (host_klass != NULL) {
// Create a new CLD for anonymous class, that uses the same class loader
// as the host_klass
@@ -1080,11 +1076,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, loader_data);
+ TRACE_ONLY(post_class_load_event(&ev, k, loader_data);)
}
assert(host_klass != NULL || NULL == cp_patches,
"cp_patches only found with host_klass");
return k;
@@ -1662,11 +1658,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, loader_data);
+ TRACE_ONLY(post_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