超快的 "非优化Sparkplug编译器",可将字节码编译为机器码,在V8 9.1和Chrome 91中首次亮相。
通过Sparkplug编译器,谷歌希望改善Chrome浏览器中的JavaScript性能。Sparkplug在Chrome 91中首次亮相。
作为Chrome浏览器V8 JavaScript/WebAssembly引擎的一部分,Sparkplug被定位为一个 "超快 "的非优化编译器。在5月27日发布的公告中,Sparkplug被描述为编译器管道的一部分,位于Ignition解释器和TurboFan优化编译器之间。
Sparkplug从字节码而不是从JavaScript源代码进行编译。换句话说,Sparkplug编译的函数已经被编译成字节码;字节码编译器已经完成了诸如变量解析、确定括号是否真的是箭头函数以及解构语句的工作。
与大多数编译器不同,Sparkplug不产生任何中间表示。相反,它通过对字节码的单一线性传递直接编译成机器码,并发出与该字节码的执行相匹配的代码。整个编译器是在一个for
循环中的一个switch
语句,该语句调度机器代码生成功能。
谷歌的V8开发人员指出,自2016年以来,他们已经从跟踪合成基准,如Octane,转向测量优化编译器之外的JavaScript的真实世界性能。因此,该团队一直在研究V8的其他几个方面,包括解析器、流媒体、对象模型和缓存编译的代码。