今日は JIT 実装の最適化や修正が色々あった!
正直そこまでよく分かってないので、そのうち時間とって頑張って見ないとあかん気がする
2019-04-02
dstogov: Use Zend MM for JIT temporary buffres allocation
- https://github.com/php/php-src/commit/6fccca54a20c34c972f0c98db17462a63189715e
- ext/opcache で、JIT 用のバッファ確保に Zend Memory Manager を使うよう修正
- 何も定義してないとすぐ下で include してる dasm_proto.h の実装にフォールバックしてた奴かな
dstogov: Eliminate hash lookup for immutable op_arrays
- https://github.com/php/php-src/commit/d196ec9b93805df1bc3e1446e834e42eada0eb8a
- ext/opcache で、JIT でのユーザ定義関数呼び出し時に ZEND_ACC_IMMUTABLE なものについては op_array のハッシュテーブル参照を無くして高速化
dstogov: Removed checks for required object handlers
- https://github.com/php/php-src/commit/8bf2de045b5f3f5e3aa81042e09bc22addf1c517
- ext/opcache で、JIT でのオブジェクトアクセス時に(必須の)オブジェクトハンドラの存在チェックを削除して高速化
dstogov: Fixed edge cases in ZEND_ASSIGN_OP+ASSIGN_DIM and replaced specialized helpers with single one
- https://github.com/php/php-src/commit/4e1d545d470cd56878ac47cd6eac26675582831b
- ext/opcache で、JIT 時のオブジェクト/配列の代入処理でなんかエッジケースがあったらしいがよく分からず
- 状況特化のヘルパをがっつり潰して共通関数で済ますようにしているようだ
dstogov: typo
- https://github.com/php/php-src/commit/b6dc1d2466e14171ebcd0a5f02b9d5e25a2e0b4b
- ext/opcache で、JIT 処理内の typo を修正
cmb69: Fix misplacement of calling convention declaration
- https://github.com/php/php-src/commit/ba67d44e0771ea0e93115c4a4105880213850f00
- ext/opcache で、JIT 用実装の関数宣言で ZEND_FASTCALL の指定位置が誤っていた問題の修正
dstogov: Added comments
- https://github.com/php/php-src/commit/0d6fce887b19e1b78778bf41421f18f5ffcdeb7f
- ext/opcache で、JIT 用実装にコメントの追加
- あとなんか
#if 0
で HYBRID VM のハンドラ呼び出しを末尾呼び出しで直接飛ぶ形に処理したい気持ちが表明されている