網(wǎng)站建設(shè)定制JavaScriptCore引擎采用的字節(jié)碼解釋器和多層JIT編譯器的編譯架構(gòu)
- 編輯:admin -第1層LLINT interpreter用于對字節(jié)碼進(jìn)行解釋執(zhí)行,第2層基礎(chǔ)JIT編譯器將某些執(zhí)行頻繁的熱點(diǎn)函數(shù)的字節(jié)碼編譯成基礎(chǔ)本地代碼(Baseline Native code),對于更熱點(diǎn)的函數(shù)采用第3層的DFG Speculative JIT編譯器生成更優(yōu)化的本地代碼(DFG Native code),第4層LLVM JIT編譯器還可以對代碼進(jìn)一步優(yōu)化,生成執(zhí)行效率更高的LLVM本地代碼。
JavaScriptCore引擎采用的字節(jié)碼解釋器和多層JIT編譯器的編譯架構(gòu)。第1層LLINT interpreter用于對字節(jié)碼進(jìn)行解釋執(zhí)行,第2層基礎(chǔ)JIT編譯器將某些執(zhí)行頻繁的熱點(diǎn)函數(shù)的字節(jié)碼編譯成基礎(chǔ)本地代碼(Baseline Native code),對于更熱點(diǎn)的函數(shù)采用第3層的DFG Speculative JIT編譯器生成更優(yōu)化的本地代碼(DFG Native code),第4層LLVM JIT編譯器還可以對代碼進(jìn)一步優(yōu)化,生成執(zhí)行效率更高的LLVM本地代碼。
但是JavaScript引擎中JIT編譯器在對代碼進(jìn)行優(yōu)化時(shí)需要進(jìn)行類型特化,并在執(zhí)行時(shí)進(jìn)行deoptimization check,如果檢查失敗,則會(huì)進(jìn)行代碼回退。圖10中OSREntry表示代碼優(yōu)化,OSRExit表示代碼回退。

