javascript - 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
为机器代码?
谢谢!
解决方案
V8 开发人员在这里。我们有几种不同的“内置”实现技术:一些是用 C++ 编写的,一些是 Torque 编写的,一些是我们称之为 CodeStubAssembler 的,还有一些是直接在汇编中编写的。在 V8 的早期版本中,有些是用 JavaScript 实现的。这些策略中的每一个都有自己的优势(权衡代码复杂性、可调试性、各种情况下的性能、二进制大小和内存消耗);另外,代码随着时间的推移而演变总是有历史原因的。
推荐阅读
- scala - 如何在 Spark SQL 中合并两行?
- sql - 如何在 oracle apex 中验证两个选择列表
- python - 我是python编程的初学者。我不断收到 typeError: object() 没有参数,我不知道如何解决它。我应该怎么办?
- flutter - 如何在 Flutter 的 AlertDialog 上设置背景图像?
- java - 使用 OpenCSV 库会引发运行时异常 ListValuedMap 'Class not found'
- python - 如何使用 python 将终端输出打印到网格中的 tkinter 帧?
- ios - 如何根据设备屏幕调整 UICollectionViewCell 的大小
- java - 浮动变量 beign 更改而没有明确地归属
- c++ - C++ Karatsuba 长整数算法错误
- javascript - 如何要求用户提供通知以启用更好的可见方式?