0

我问这个问题的原因是,如果我编写一个没有热代码的 Javascript(因此它不需要通过 TurboFan 进行优化,也就是短运行脚本),所以当我运行这个 Javascript 时,我假设它将经历以下过程:

js 代码(点火)-> 字节码 -> codeStubHandler(TurboFan IR) -> 汇编代码

并且为 builtins-definition.h 中声明的所有内置函数生成的汇编代码位于名为 embedded.S 的文件中。

所以每个字节码都有一个处理程序来直接为它们生成汇编代码?我的理解正确吗?至少这是我在调试脚本时看到的。

请帮我验证。

4

1 回答 1

0

Ignition 不会将 JavaScript 编译为程序集。毕竟是口译员。它创建字节码,然后解释该字节码(通过字节码处理程序)。

字节码处理程序是我们称之为“内置”的特殊类。它们在 V8 构建时生成,并嵌入到二进制文件中。它们不会在运行时生成汇编代码。

解释意味着字节码处理程序本身被执行。这并不意味着任何汇编代码都是在运行时生成的。

只有经过优化的编译(使用 Turbofan)才能在运行时创建 Turbofan IR。

于 2021-02-24T12:09:04.207 回答