Template Interpreter による return 系のバイトコードの処理は, 全て TemplateTable::_return() 内で行われる.
TemplateTable::_return() が生成するコード -> (1) return_register_finalizer バイトコードの場合は, 必要に応じて Finalizer の登録処理を行う -> InterpreterRuntime::register_finalizer() (1) スタックフレームを破棄するための準備を行う (synchronized method であればロックの解除も行う) -> InterpreterMacroAssembler::remove_activation() が生成するコード -> InterpreterMacroAssembler::unlock_if_synchronized_method() が生成するコード -> (See: here for details) -> InterpreterMacroAssembler::notify_method_exit() が生成するコード (1) restore しつつ, リターン.
TemplateTable::_return() が生成するコード -> (1) return_register_finalizer バイトコードの場合は, 必要に応じて Finalizer の登録処理を行う -> InterpreterRuntime::register_finalizer() (1) スタックフレームを破棄するための準備を行う (synchronized method であればロックの解除も行う) -> InterpreterMacroAssembler::remove_activation() が生成するコード -> InterpreterMacroAssembler::unlock_object() が生成するコード -> (See: here for details) -> InterpreterMacroAssembler::notify_method_exit() が生成するコード (1) リターン.
See: here for details
(#Under Construction)
See: here for details
(#Under Construction)
See: here for details
See: here for details
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.