Template Interpreter の場合, 境界は InterpreterGenerator::generate_native_entry() が生成したコードになる (See: here for details). このため, このコード内で pending_exception のチェックを行っている.
(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)
(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)
See: here for details
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.