以下の内容はhttps://y-uti.hatenablog.jp/entry/2016/12/12/103502より取得しました。


JIT のコードを読んでみた (勉強会発表資料)

12 月 11 日に開催された 第七回闇 PHP 勉強会 に参加して、現在開発が進められている PHPJIT コンパイラについて発表しました。

JIT のコードを読んでみた from y-uti
www.slideshare.net

おおまかな流れとしては、OPcache に処理を追加することで各関数の実行回数を計測するコードを差し込み、閾値を超えたら JIT コンパイルを行ってネイティブコードを実行するというものです。ネイティブコード生成処理には DynASM を利用しています。

現在の実装は selective inlining という手法で、元のバイトコード命令一つ一つを機械語に展開して置き換えていきます。特に高度な最適化が施されるわけではありません。勉強会の場で参加者の方々ともお話させていただきましたが、このあたりは JIT コンパイルというフェーズでどこまでやるのかという判断にもなりそうです。コード解析処理は OPcache での実装を利用しているのですが、今回、こちらはちゃんと読み込むことができませんでした。デバッグ出力を見てみると、こちらもソースコードを追ってみると面白そうです。

なお、JIT コンパイラはまだ開発の初期段階で、実装も頻繁に変わっているようです。発表で利用したスライドは 11 月 25 日時点のコミットを対象にして作り始めたのですが、現在の最新のコードでは、スライドとは異なるコードが生成されるかもしれません。




以上の内容はhttps://y-uti.hatenablog.jp/entry/2016/12/12/103502より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14