返回
Rethinking Exception Handling in a Lightweight JavaScript Interpreter
DOI:10.1109/access.2026.3726724.png)
摘要
En 中文
动态语言解释器必须将异常处理作为正常执行的一部分,因为许多语义检查是在运行时进行的。在基于解释器的JavaScript引擎中,特别是在轻量级或资源受限的环境中,异常传播通常采用基于返回的机制实现,其中可能失败的操作返回标记的结果,这些结果必须由解释器显式检查和传播。虽然这种方法提供了对异常状态的显式控制,但它会在解释器的热点路径中引入重复检查,并增加实现复杂度。本文重新审视了这一设计选择,通过探索基于本地异常的处理(NEH),利用宿主语言的零成本异常机制通过本地堆栈展开传播JavaScript异常。我们在一个轻量级JavaScript解释器中详细介绍了NEH的设计和实现,并将其与同一系统中的传统基于返回的方法进行了比较。所提出的设计保留了JavaScript语义,同时通过沙箱执行边界确保了健壮的失败 containment。我们在多个架构和编译器工具链上评估了这两种方法,重点关注代码复杂度、二进制大小和运行时性能,使用具有代表性的JavaScript工作负载。结果表明,NEH显著减少了与异常相关的样板代码,简化了解释器的热点路径,而不会增加二进制占用空间,尽管依赖于本地C++异常,但没有引入系统性的运行时开销。总体而言,这个案例研究表明,本地异常机制可以作为具有类似架构特征的轻量级基于解释器的JavaScript引擎的一种实用设计替代方案。
Keyword:
Dynamic language runtimes
exception handling
interpreter design
JavaScript engine
native exception propagation
runtime system optimization
zero-cost exceptions
期刊
IF:
3.6
论文数:
9.8W
被引数:
29.4W
机构
引用论文
暂无论文信息

