跳至主要内容

內建函數

V8 中的內建函數根據其功能、性能需求,有時也根據純粹的歷史發展而有不同的實現方式。

有些內建函數直接以 JavaScript 實現,並且在運行時像任何使用者 JavaScript 一樣被編譯為可執行代碼。其中一些依賴於所謂的_運行時函數_來完成部分功能。運行時函數是用 C++ 寫成的,並通過 % 前綴從 JavaScript 調用。通常,這些運行時函數僅限於 V8 的內部 JavaScript 代碼。在調試時,如果 V8 使用了標誌 --allow-natives-syntax,則它們也可以從普通 JavaScript 代碼中調用。一些運行時函數直接由編譯器嵌入生成的代碼中。相關列表可以查看 src/runtime/runtime.h

其他函數則是作為_內建函數_實現,這些內建函數本身可以採用多種不同的實現方式。有些直接用平台相關的組合語言實現。有些用_CodeStubAssembler_(一種平台無關的抽象層)實現。還有一些直接用 C++ 實現。內建函數有時也被用於實現部分聯結代碼,不一定是整個函數。相關列表可以查看 src/builtins/builtins.h