< prev index next >

src/hotspot/share/prims/jvmtiExport.cpp

Print this page
rev 52132 : 8201655: Add thread-enabled support for the Heap Sampling
Summary:
Reviewed-by:

*** 2540,2565 **** } } } void JvmtiExport::post_sampled_object_alloc(JavaThread *thread, oop object) { EVT_TRIG_TRACE(JVMTI_EVENT_SAMPLED_OBJECT_ALLOC, ("[%s] Trg sampled object alloc triggered", JvmtiTrace::safe_get_thread_name(thread))); if (object == NULL) { return; } HandleMark hm(thread); Handle h(thread, object); ! JvmtiEnvIterator it; ! for (JvmtiEnv* env = it.first(); env != NULL; env = it.next(env)) { ! if (env->is_enabled(JVMTI_EVENT_SAMPLED_OBJECT_ALLOC)) { EVT_TRACE(JVMTI_EVENT_SAMPLED_OBJECT_ALLOC, ("[%s] Evt sampled object alloc sent %s", JvmtiTrace::safe_get_thread_name(thread), object == NULL ? "NULL" : object->klass()->external_name())); JvmtiObjectAllocEventMark jem(thread, h()); JvmtiJavaThreadEventTransition jet(thread); jvmtiEventSampledObjectAlloc callback = env->callbacks()->SampledObjectAlloc; if (callback != NULL) { (*callback)(env->jvmti_external(), jem.jni_env(), jem.jni_thread(), --- 2540,2572 ---- } } } void JvmtiExport::post_sampled_object_alloc(JavaThread *thread, oop object) { + JvmtiThreadState *state = thread->jvmti_thread_state(); + if (state == NULL) { + return; + } + EVT_TRIG_TRACE(JVMTI_EVENT_SAMPLED_OBJECT_ALLOC, ("[%s] Trg sampled object alloc triggered", JvmtiTrace::safe_get_thread_name(thread))); if (object == NULL) { return; } HandleMark hm(thread); Handle h(thread, object); ! ! JvmtiEnvThreadStateIterator it(state); ! for (JvmtiEnvThreadState* ets = it.first(); ets != NULL; ets = it.next(ets)) { ! if (ets->is_enabled(JVMTI_EVENT_SAMPLED_OBJECT_ALLOC)) { EVT_TRACE(JVMTI_EVENT_SAMPLED_OBJECT_ALLOC, ("[%s] Evt sampled object alloc sent %s", JvmtiTrace::safe_get_thread_name(thread), object == NULL ? "NULL" : object->klass()->external_name())); + JvmtiEnv *env = ets->get_env(); JvmtiObjectAllocEventMark jem(thread, h()); JvmtiJavaThreadEventTransition jet(thread); jvmtiEventSampledObjectAlloc callback = env->callbacks()->SampledObjectAlloc; if (callback != NULL) { (*callback)(env->jvmti_external(), jem.jni_env(), jem.jni_thread(),
< prev index next >