V8 中的数组方法是用 C++、扭矩编写的,还是在运行时将 JS 转换为机器代码



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

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

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

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

谢谢!

这里的

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

相关内容

最新更新