DynamicCodeGenerated イベントには通常の処理パスと GenerateEvents() によるパスの2通りがある.
(なお, 通常の処理パスと GenerateEvents() によるパスで呼び出されるメソッドは, メソッド名はどちらも JvmtiExport::post_dynamic_code_generated() だが, 引数が異なる(オーバーロード)ので注意)
通常の処理パスではイベントは全て遅延通知される (See: here for details).
なお, 通常の処理パスの中には JvmtiDynamicCodeEventCollector オブジェクトを用いたパスも存在する. この場合も遅延通知になる点は同様だが, まず通知するイベントの情報を JvmtiDynamicCodeEventCollector オブジェクト内に溜めた後, JvmtiDynamicCodeEventCollector のデストラクタ内で遅延通知処理が行われる (See: JvmtiDynamicCodeEventCollector).
(略) (See: here for details) -> VtableStubs::create_vtable_stub() -> VtableStub::operator new() -> JvmtiExport::post_dynamic_code_generated_while_holding_locks() -> JvmtiDynamicCodeEventCollector::register_stub() (略) (See: here for details) -> VtableStubs::create_itable_stub() -> VtableStub::operator new() -> (同上)
(略) (See: )
-> interpreter_init()
-> JvmtiExport::post_dynamic_code_generated(const char *name, const void *code_begin, const void *code_end)
-> (略) (See: here for details)
(略) (See: )
-> JvmtiDynamicCodeEventCollector::~JvmtiDynamicCodeEventCollector()
-> JvmtiExport::post_dynamic_code_generated(const char *name, const void *code_begin, const void *code_end)
-> (略) (See: here for details)
(略) (See: )
-> AdapterHandlerLibrary::get_adapter()
-> JvmtiExport::post_dynamic_code_generated(const char *name, const void *code_begin, const void *code_end)
-> (略) (See: here for details)
(略) (See: )
-> CodeBlob::trace_new_stub()
-> JvmtiExport::post_dynamic_code_generated(const char *name, const void *code_begin, const void *code_end)
-> (略) (See: here for details)
(略) (See: )
-> StubCodeMark::~StubCodeMark()
-> JvmtiExport::post_dynamic_code_generated(const char *name, const void *code_begin, const void *code_end)
-> (略) (See: here for details)
(略) (See: )
-> SharkCompiler::generate_native_code()
-> JvmtiExport::post_dynamic_code_generated(const char *name, const void *code_begin, const void *code_end)
-> (略) (See: here for details)
(See: here for details)
(#Under Construction)
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
(#Under Construction)
See: here for details
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.