Javascript 与V8发动机工作原理的混淆

Javascript 与V8发动机工作原理的混淆,javascript,v8,Javascript,V8,我是JS新手,正在学习V8引擎如何在幕后工作。V8生成字节码而不是机器码是真的吗。我的意思是,在点火生成字节码后,探查器会分析字节码进行改进,然后编译器(涡扇)会分析和优化字节码,也就是说,涡扇发动机是用字节码生成机器代码还是生成优化的字节码?V8开发者在这里。涡扇发动机产生优化的机器代码。感谢您的友好回答,好的,有两个问题。首先,我认为需要点火是对的,因为它有助于更快地编译代码,而且由于点火,最终的机器代码将紧凑且内存高效?其次,探查器在ignition生成字节码以查找优化时监视ignitio

我是JS新手,正在学习V8引擎如何在幕后工作。V8生成字节码而不是机器码是真的吗。我的意思是,在点火生成字节码后,探查器会分析字节码进行改进,然后编译器(涡扇)会分析和优化字节码,也就是说,涡扇发动机是用字节码生成机器代码还是生成优化的字节码?

V8开发者在这里。涡扇发动机产生优化的机器代码。

感谢您的友好回答,好的,有两个问题。首先,我认为需要点火是对的,因为它有助于更快地编译代码,而且由于点火,最终的机器代码将紧凑且内存高效?其次,探查器在ignition生成字节码以查找优化时监视ignition,并且只有在生成字节码之后,编译器才开始工作并优化代码,这是真的吗。我真的希望得到你的好意。)Re 1,JavaScript的优化需要在未优化的执行过程中收集类型反馈;点火是几种可能的方法之一。Re 2,否,字节码生成不受监控。探查器监视执行的字节码,并最终触发热函数的优化编译。Re 1,好的,我读入点火是必要的,因为它生成的字节码是以前生成的JIT编译器大小的25%到50%。所以,当编译器将字节码编译成机器码时,代码的大小会更小,对吗?Re 2,好的,在点火生成字节码后,执行字节码,分析器负责优化分析,然后将字节码分析提供给编译器,以输出最终优化的机器代码。对吗?Re 1,字节码的大小不会以任何方式影响优化代码的大小。在那篇文章中引用的数字将Ignition的字节码与Ignition所取代的非优化编译器生成的未优化机器代码进行了比较。点火本身并不“需要”;这是一个比以前更好的解决方案。Re 2,探查器只选择要优化的函数,优化编译器进行优化。它不分析字节码,它从字节码构建自己的IR,然后分析/转换。我看了你链接的那篇文章,发现它非常混乱。我认为如果您阅读我们在v8.dev/blog/上的文章,您可能会更好地理解。