各バイトコードの処理は, それぞれ以下のメソッドで行われる.
これらのメソッドは, ほとんどは InterpreterRuntime の対応するメソッドを呼び出すだけだが, TemplateTable::_new() にだけは fast-path が存在する.
TemplateTable::_new() の処理は, CPU 種別によって生成されるコードは異なるがどちらも処理の流れは同じ. 具体的には, fast-path での処理が行える状態かどうか(クラスの初期化などが終わっているかどうか)を確認した後, TLAB や shared eden から確保を試みる, 確保が失敗した場合は, slow-path 処理にフォールバックする.
TemplateTable::_new() -> (1) fast-path での確保処理が出来るかどうかをチェック (クラスの初期化が終わっているかどうかなど). 出来なければ slow-path (1) UseTLAB が指定されていれば TLAB からの確保を試みる. 成功すれば, 確保したオブジェクトを初期化した後, ここで終了. (1) shared eden からの確保を試みる. 成功すれば, 確保したオブジェクトを初期化した後, ここで終了. (1) 確保が全部失敗したら slow path へフォールスルー -> InterpreterRuntime::_new() -> (See: here for details)
TemplateTable::newarray() -> InterpreterRuntime::newarray() -> (See: here for details)
TemplateTable::anewarray() -> InterpreterRuntime::anewarray() -> (See: here for details)
TemplateTable::multianewarray() -> InterpreterRuntime::multianewarray() -> (See: here for details)
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.