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.