在https://v8.dev/docs/ignition上,我们可以看到:
在https://docs.google.com/document/d/11T2CRex9hXxoJwbYqVQ32yIPMh0uouUZLdyrtmMoL44/edit?ts=56f27d9d#上
因此,似乎点火工作是将BytecodeGenerator生成的字节码转换为字节码处理程序,并通过Turbofan
执行。
但在这儿:
和这里:
您可以看到是点火产生了字节码。
此外,在此视频https://youtu.be/p-iiEDtpy6I?t=722中,点火被称为基准编译器。
那是什么
基准编译器?字节码解释器? AST转换为字节码转换器?
该图像似乎是最合适的:
在这里,点火只是一个解释器,之前的一切都是无名的字节码生成器/优化器。
最佳答案
V8开发人员在这里。
是的,总结一下。要添加更多细节:
因此,似乎点火工作是将BytecodeGenerator生成的字节码转换为字节码处理程序,然后通过Turbofan执行
设计文档的这一部分讨论有关生成字节码处理程序的过程,该过程使用Turbofan的一部分“提前”(即,在编译V8时)发生。在运行时,字节码不会转换为处理程序,而是由现有的固定处理程序集“处理”(=运行,执行,解释),并且不涉及Turbofan。
当时,演讲是指所有现代JavaScript引擎都具有“基准编译器”的一般想法(从非常一般的概念意义上讲,我同意幻灯片可以使这一点变得更加清晰)。请注意,幻灯片未提及点火。下一张幻灯片说,点火在V8中扮演着这个角色。因此,更准确的说法是说“点火代替了基准编译器”或“点火是基准执行引擎”。或者,您可以稍微重新定义您的术语,然后说:“点火是生成字节码然后对其进行解释的编译器”。
该幻灯片将“解释器”框显示为“点火字节码管道”的一部分。字节码生成器/优化器也是点火的一部分。