javascript - V8 中的数组方法是用 C++、Torque 编写的,还是 JS 在运行时转换为机器码?

标签 javascript v8

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

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

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

所以我想我想知道是否有 array.map 的 C++ 或 Torque 等价物。 , 还是 C++ 或 Torque 模块仅用于转换 array.map 的 JS 版 native 器码?

谢谢!

最佳答案

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

关于javascript - V8 中的数组方法是用 C++、Torque 编写的,还是 JS 在运行时转换为机器码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56585898/

相关文章:

javascript - Javascript/Node.js 引擎如何将 JSON 存储在内存中?

event-handling - Javascript 内部 : how events are implemented?

javascript - 将数据发布到 JsonP

javascript - 想要在页面加载时禁用下拉列表并在 HTML 中的按钮单击事件中启用它

javascript - 未捕获的 TypeError : $(. ..).bxSlider 不是 Laravel 中的函数..

javascript - 为什么 V8 不能优化 try-catch-finally?

javascript - 如何在 NodeJS 中向 JSON、Date 或其他 'native' 对象全局添加方法?

javascript - 跨浏览器/引擎 Math.PI 始终为 3.141592653589793?

javascript - Javascript 的视频音量问题

javascript - 使用 javascript 将 Latex 转换为 maxima