hotspot/src/share/vm/prims/jvmtiExport.cpp
// post a DYNAMIC_CODE_GENERATED event for a given environment
// used by GenerateEvents
void JvmtiExport::post_dynamic_code_generated(JvmtiEnv* env, const char *name,
const void *code_begin, const void *code_end)
{
{- -------------------------------------------
(1) (変数宣言など)
---------------------------------------- -}
JavaThread* thread = JavaThread::current();
{- -------------------------------------------
(1) (トレース出力)
---------------------------------------- -}
EVT_TRIG_TRACE(JVMTI_EVENT_DYNAMIC_CODE_GENERATED,
("JVMTI [%s] dynamic code generated event triggered (by GenerateEvents)",
JvmtiTrace::safe_get_thread_name(thread)));
{- -------------------------------------------
(1) (env 引数で指定された JvmtiEnv で
JVMTI_EVENT_DYNAMIC_CODE_GENERATED イベントが有効になっていない場合は,
何もせずに終了)
---------------------------------------- -}
if (env->is_enabled(JVMTI_EVENT_DYNAMIC_CODE_GENERATED)) {
{- -------------------------------------------
(1) (トレース出力)
---------------------------------------- -}
EVT_TRACE(JVMTI_EVENT_DYNAMIC_CODE_GENERATED,
("JVMTI [%s] dynamic code generated event sent for %s",
JvmtiTrace::safe_get_thread_name(thread), name));
{- -------------------------------------------
(1) コールバック関数が設定されていれば, コールバック関数を呼び出す.
(設定されていなければ, 何もしない)
---------------------------------------- -}
JvmtiEventMark jem(thread);
JvmtiJavaThreadEventTransition jet(thread);
jint length = (jint)pointer_delta(code_end, code_begin, sizeof(char));
jvmtiEventDynamicCodeGenerated callback = env->callbacks()->DynamicCodeGenerated;
if (callback != NULL) {
(*callback)(env->jvmti_external(), name, (void*)code_begin, length);
}
}
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.