php-master-changes 2019-04-03

今日は opcache / JIT の修正色々、不要コードの削除、phpdbg でのファイル include の扱い修正があった！

# 2019-04-03
## dstogov: Avoid generation of dead jumps
- https://github.com/php/php-src/commit/278c8e7b59e9a7ab96901d7a0816d5226acb6363
- ext/opcache/jit で、不要なジャンプ命令を生成しないよう修正
- [basic block](https://en.wikipedia.org/wiki/Basic_block) （入口/出口以外に分岐のないまっすぐなコード範囲）がジャンプになる命令で終端されているかを見るようにしたもよう

## dstogov: Avoid NEW opcode inlining when opcache.jit=1
- https://github.com/php/php-src/commit/12da21b1c184d885039a0d991b8c25e4dab7ccc6
- JIT の最適化レベル（1235 とかの 5 の部分）が 1 以下の場合にも `new` がインライン化されていた問題の修正

## KalleZ: Remove dead JPEG2000 code
- https://github.com/php/php-src/commit/dce7f244a9a817056a94c960f4c0945ffc0c5833
- [7.4~]
- ext/exif で、不要な（使われていない）JPEG2000 用のコードを削除

## dstogov: Fixed clang compiler warnings
- https://github.com/php/php-src/commit/672d80f5dcb12a06d200969b8159badd45a57c0d
- ext/opcache/jit で、clang でコンパイラ警告が出てたのを修正

## dstogov: Use fastcall calling convention
- https://github.com/php/php-src/commit/803d32224055373cfabd7695e456f4e1382d44ab
- タイムアウトのハンドラ zend_timeout() を fast call で呼ぶよう修正

## dstogov: Improved comparison opcode handlers
- https://github.com/php/php-src/commit/9cb926d8d11f6f7b45bb5c8c56760de58ae76ea4
- [7.4~]
- 比較のオペコードハンドラをリファクタリング
- do-while で break してスローパスに流してたのを goto 使うようになってる

## dstogov: Use fastcall calling convention
- https://github.com/php/php-src/commit/f53240dbc479fe740a462b73743cc9deb31f88fd
- [7.4~]
- 7.4 系でもタイムアウトのハンドラ zend_timeout() を fast call で呼ぶよう修正

## petk: Clean ext/spl/tests/bug42364.phpt files after tests
- https://github.com/php/php-src/commit/bb8ea4d64d3bd9fc93e5a6aef56d51fddcdd1e12
- [7.4~]
- ext/spl で、テストで生成する一時ファイルを削除するよう修正

## dstogov: array_merge() may return argument with incremented reference counter
- https://github.com/php/php-src/commit/9ef2377d333006c0c95009f2c92910d6c904078c
- [7.4~]
- ext/opcache で、最適化用に組み込み関数の情報を突っ込む箇所で array_merge() の情報を微修正

## dstogov: Improve JIT code for smart branches
- https://github.com/php/php-src/commit/6cfa4907867c70b7ae2ddbeadb4f5da7b73829a2
- ext/opcache/jit で、[smart branches](https://nikic.github.io/2017/04/14/PHP-7-Virtual-machine.html#smart-branch) 用の JIT コードを改善

## dstogov: Fixed CFG construction for SWITCH opcodes
- https://github.com/php/php-src/commit/56a5d0bd9179972d0675f8f772fc5423d9de00d0
- [7.2~]
- ext/opcache で、switch のオペコード用の CFG 構築のバグを修正
- reachable コードの判定コードが unreachable だった的な

## dstogov: JIT code improvement for ocache.jit=1 (IP consistency)
- https://github.com/php/php-src/commit/b9c639d7ac16e7c3099ec03d3d38384d7d5092be
- ext/opcache/jit で、JIT 最適化レベル 1 以下用のコードを改善

## dstogov: Fixed SCCP support for ZEND_ASSIGN_OBJ_REF
- https://github.com/php/php-src/commit/c941f1d8c7a1418d65d01803b421dfe746eb69a0
- [7.4~]
- ext/opcache で、ZEND_ASSIGN_OBJ_REF 用の SCCP 最適化サポートの修正
- ぶっちゃけよく分かっておらず

## dstogov: Remove RC1 and RCN from scalar types.
- https://github.com/php/php-src/commit/dd4d43c97d18781101f912b3d0d1dac36b8dc08d
- [7.4~]
- ext/opcache で、型推論時にスカラ型から 1 以上の参照カウントを持つ可能性を除去
- スカラ型っていうと MAY_BE_STRING がアレだが……コミットコメントがスカラ型って言ってるからスカラ型

## dstogov: Fixed incorrect address usage
- https://github.com/php/php-src/commit/3df8e27731dce8ed141a91f02832798e67c2b4ea
- ext/opcache/jit で、インクリメント / デクリメントでの誤ったアドレスの利用を修正
- この def は [use/def chain](https://en.wikipedia.org/wiki/Use-define_chain) での def かな、知らないと分からんこと多くて右往左往するけど、数年ボケーッと見てるとそのうちノリが分かってくるよーな気がする

## dstogov: Use inlined HYBRID VM handlers for DO_FCALL* and ZEND_RETRUN
- https://github.com/php/php-src/commit/22b3b6d5eaf4e5be05fa26f70f9a718daa82f769
- ext/opcache/jit で、DO_FCALL* にインライン化された HYBRID VM のハンドラを使うよう修正
- [昨日お気持ち表明されてた](https://qiita.com/sj-i/items/f4f65384bd6d3754f31e#dstogov-added-comments)箇所だな
- need disassembler support ってほんとに逆アセンブラのことか、デバッグ用に足さないとってことか

## alekitto: Ref [#76801](https://bugs.php.net/bug.php?id=76801) remove old file source from file_sources hash in case of file included more than once
- https://github.com/php/php-src/commit/4029c0b6a2908096b9dd49797260daafdae5558d
- [7.2~]
- sapi/phpdbg で、複数回ファイルが include される際に古いファイルをハッシュテーブルから削除するよう修正
- [先日のバグ修正](https://qiita.com/sj-i/items/da08fe2ecf55a8b304c5#alekitto-fix-bug-76801-phpdbg-too-many-open-files-error)で足りないところがあったってことかなとは思うものの、あまり追えておらず