内置函数
V8 中的内置函数在实现方面有不同的风格,具体取决于其功能、性能要求,有时还取决于历史发展。
一些函数直接用 JavaScript 实现,并在运行时像任何用户 JavaScript 一样编译成可执行代码。其中一些函数依赖于所谓的运行时函数来实现部分功能。运行时函数是用 C++ 编写的,通过%
前缀从 JavaScript 调用。通常,这些运行时函数仅限于 V8 内部 JavaScript 代码。为了调试目的,如果 V8 使用标志--allow-natives-syntax
运行,它们也可以从正常的 JavaScript 代码中调用。一些运行时函数直接由编译器嵌入到生成的代码中。有关列表,请参见src/runtime/runtime.h
。
其他函数实现为内置函数,它们本身可以用多种不同的方式实现。一些直接用平台相关的汇编实现。一些用CodeStubAssembler实现,这是一个平台无关的抽象。还有一些直接用 C++ 实现。内置函数有时也用于实现粘合代码片段,不一定是一整个函数。有关列表,请参见src/builtins/builtins.h
。