Torque简介
介紹 V8 Torque
如果您是V8開發者博客的愛好者,可能聽說過 CodeStubAssembler,或簡稱 CSA。CSA是V8的一個組件,它允許我們直接用C ++編寫低級別的TurboFan IR(intermediate representation),TurboFan的后端(編譯器后端)則將其翻譯為相應架構上的機器碼。
CSA被大量應用于為JavaScript內置函數編寫所謂的“快速路徑”。內置的“快速路徑”版本通常檢查某些特別的條件是否成立(例如原型鏈上沒有元素,沒有訪問器等),然后使用更快,更特殊優化的操作來實現內置函數的功能。這可以使函數執行時間比通用版本快一個數量級。
CSA的缺點是它確實可以被認為是匯編語言。流程控制使用明確的 label 和 goto進行建模,這使得在CSA中實現復雜算法時,代碼會難以閱讀且容易出錯。
然后是V8 Torque。Torque是一種領域專用語言,具有類似TypeScript的語法,目前使用CSA作為其唯一的編譯目標。Torque允許開發者使用與CSA幾乎相同層次的流程控制操作,同時提供更高級別的構造,例如while和for循環。此外,它是強類型的,并且將來還會包含類似自動越界這樣的安全檢查,為V8引擎的工程師提供更強大的保障。
用V8 Torque重寫的第一個重要的內置函數是 TypedArray#sort 和 Dataview。這兩者的重寫都有另外的目的,即向Torque開發人員反饋所需要的語言功能,以及使用哪些模式會可以更高效地編寫內置函數。在撰寫本文時,多個JSArray的內置函數和對應的自托管的JavaScript后備實現,已經遷移至Torque(例如,Array#unshift),其余的則被完全重寫(例如,Array#splice和Array#reverse)。
作者:SmileSmith
鏈接:https://juejin.im/post/5c472940e51d455249762bef
來源:掘金
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
總結
- 上一篇: Python--猜水果游戏
- 下一篇: VOD(视频点播技术)基本原理