メインコンテンツまでスキップ

組み込み関数

V8における組み込み関数は、機能要件、性能要件、または単に歴史的な発展に応じて、実装に様々な種類があります。

一部は直接JavaScriptで実装されており、任意のユーザJavaScriptと同様にランタイム時に実行可能コードにコンパイルされます。これらの一部は、その機能の一部を実現するためにいわゆる_ランタイム関数_を利用します。ランタイム関数はC++で記述され、JavaScriptから%で始まる接頭辞を介して呼び出されます。通常、これらのランタイム関数はV8内部のJavaScriptコードのみで制限されています。デバッグの目的で、V8が--allow-natives-syntaxフラグ付きで実行される場合、通常のJavaScriptコードからも呼び出すことができます。一部のランタイム関数はコンパイラによって生成コードに直接埋め込まれます。リストについては、src/runtime/runtime.hを参照してください。

その他の関数は_組み込み_として実装されており、それ自体がいくつかの異なる方法で実装されることがあります。一部はプラットフォーム依存のアセンブリで直接実装されています。一部は_コードスタブアセンブラ_というプラットフォームに依存しない抽象化で実装されています。また、その他はC++で直接実装されています。組み込みは、必ずしも完全な関数ではなく接着コードの部分を実装するために使用されることもあります。リストについては、src/builtins/builtins.hを参照してください。