組み込み関数
V8 における組み込み関数は、機能、パフォーマンス要件、および場合によっては単なる履歴上の開発に基づいて、実装に関してさまざまな種類があります。
JavaScript で直接実装され、通常のユーザー JavaScript とまったく同じように実行時に実行可能コードにコンパイルされるものもあります。一部の組み込み関数は、一部の機能にいわゆる「ランタイム関数」を使用しています。ランタイム関数は C++ で記述され、%
プレフィックスを使用して JavaScript から呼び出されます。通常、これらのランタイム関数は V8 内部 JavaScript コードに限定されています。デバッグ目的で、V8 がフラグ --allow-natives-syntax
で実行される場合は、通常の JavaScript コードから呼び出すこともできます。一部のランタイム関数は、コンパイラによって生成されたコードに直接埋め込まれています。リストについては、src/runtime/runtime.h
を参照してください。
その他の関数は、それ自体がさまざまな方法で実装できる「組み込み」として実装されています。プラットフォーム依存アセンブリに直接実装されているものもあります。プラットフォーム非依存の抽象化である CodeStubAssembler に実装されているものもあります。さらに、C++ で直接実装されているものもあります。組み込みは、必ずしも関数全体ではなく、接着コードのピースを実装するために使用されることもあります。リストについては、src/builtins/builtins.h
を参照してください。