Up Top

Exception の処理 : 処理の詳細 (4) : 例外ハンドラの探索処理 : 異種フレーム境界での処理 : 非ランタイム(かつ非ネイティブ)フレーム → 非ランタイム(かつネイティブ)フレームの境界での処理 : Template Interpreter の場合


概要(Summary)

Template Interpreter の場合, 境界は InterpreterGenerator::generate_native_entry() が生成したコードになる (See: here for details). このため, このコード内で pending_exception のチェックを行っている.

処理の流れ (概要)(Execution Flows : Summary)

sparc の場合

(See: here for details)
-> InterpreterGenerator::generate_native_entry() が生成したコード
   -> MacroAssembler::call_VM() が生成したコード
      -> (See: here for details)
         -> InterpreterRuntime::throw_pending_exception()
            (これ自体は何もしない. call_VM() のチェックで引っかけて例外を伝搬させる.
             See: here for details)

x86_64 の場合

(See: here for details)
-> InterpreterGenerator::generate_native_entry() が生成したコード
   -> MacroAssembler::call_VM_base() が生成したコード
      -> (See: here for details)
         -> InterpreterRuntime::throw_pending_exception()
            (これ自体は何もしない. call_VM() のチェックで引っかけて例外を伝搬させる.
             See: here for details)

処理の流れ (詳細)(Execution Flows : Details)

InterpreterRuntime::throw_pending_exception()

See: here for details


This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.