私はv8_hello_worldサンプルをコンパイルしていて、コンソールに "hello world"という文字列を表示できます。私はV8がJavaScriptをJITでコンパイルすることを知っていますが、コンパイルされた指示などの詳細なメッセージを出力したいと思います。また、これらの命令の種類も知りたいので、どうすればよいですか?V8エンジンでコンパイルされた命令を印刷するには?
は〜
私はv8_hello_worldサンプルをコンパイルしていて、コンソールに "hello world"という文字列を表示できます。私はV8がJavaScriptをJITでコンパイルすることを知っていますが、コンパイルされた指示などの詳細なメッセージを出力したいと思います。また、これらの命令の種類も知りたいので、どうすればよいですか?V8エンジンでコンパイルされた命令を印刷するには?
は〜
生成されたコードのタイプ(複数可)に応じて、あなたが興味を持っているありがとうございました、あなたはV8に対応するフラグ(複数可)を渡す必要があります:
--print-code
プリント(「フルコード生成」によって作成され、unoptimizingコンパイラ)最適化されていないマシンコード(「点火」インタプリタにより作成)--print-bytecode
プリントバイトコードマシンコード(クレア最適化--print-opt-code
プリントこれらのフラグ(と多くの他のもの)は、--help
で文書化されています。実行パイプラインの大きな変更は現在進行中ですので、使用しているV8のバージョンによって、異なるコンパイラでコンパイルされた同じ機能が表示されることがあります。
開発者シェルd8
を使用する場合は、これらのフラグをコマンドラインで直接渡すことができます。埋め込みアプリケーションでv8::V8::SetFlagsFromCommandLine
を使用すると、argc
とargv
をV8に渡すことができます。 d8.cc
では、いくつかのフラグを自分で処理し、他のフラグをV8に渡す方法の例を見ることができます。
ありがとうございます!それは私に多くの助けになる! – Oceanisher
@jmrk少し混乱しました。水素とリチウムは何ですか? 私はそれらについて記事を読んでいます。http://www.mattzeunert.com/2015/08/19/viewing-assembly-code-generated-by-v8.html –
@DineshRavi:それらはハイレベル"Crankshaft"最適化コンパイラの低レベル中間表現です。それ以来「Turbofan」に置き換えられています。 – jmrk