首页 > 解决方案 > V8 中的数组方法是用 C++、Torque 编写的,还是 JS 在运行时转换为机器码?

问题描述

我正在了解 V8 运行时,我想知道数组方法(例如 )array.map是否是在 V8 中用 C++ 编写的?我在这里看到一些让我感到困惑的 Torque 文件,所以我想知道它们是否是用 Torque 而不是 C++ 编写的?

https://github.com/v8/v8/blob/master/src/builtins/array-map.tq

我的理解是 V8 使用即时 (JIT) 概念将 JavaScript 代码转换为机器代码。

所以我想我想知道是否有 C++ 或 Torque 等价物array.map,或者 C++ 或 Torque 模块是否仅用于将 JS 版本转换array.map为机器代码?

谢谢!

标签: javascriptv8

解决方案


V8 开发人员在这里。我们有几种不同的“内置”实现技术:一些是用 C++ 编写的,一些是 Torque 编写的,一些是我们称之为 CodeStubAssembler 的,还有一些是直接在汇编中编写的。在 V8 的早期版本中,有些是用 JavaScript 实现的。这些策略中的每一个都有自己的优势(权衡代码复杂性、可调试性、各种情况下的性能、二进制大小和内存消耗);另外,代码随着时间的推移而演变总是有历史原因的。


推荐阅读