php-master-changes 2019-05-29

今日は JIT で optimization_level を考慮するようにする修正、多数のブロックがある関数を JIT コンパイルしないようにする修正、FFI の特定テストでの JIT 無効化、travis での JIT 有効化、opcache のメモリリークの修正と func_info の更新、幾つかの局所最適化、run-tests.php で実行許可ビットが外れていたことの修正、マクロの定義間違いの修正、無効化指定の関数で ZEND_ACC_HAS_RETURN_TYPE を保持しないようにする修正、不使用変数の削除、DatePeriod のプロパティアクセスのテスト追加と get_property_ptr_ptr ハンドラの追加、set オブジェクトハンドラの削除、API バージョンの更新、escapeshellarg() と escapeshellcmd() へ NUL 文字含んだ引数を与えた際　TypeError を投げるようにする修正があった！


# 2019-05-29
## nikic: Respect optimization_level when running JIT inference
- https://github.com/php/php-src/commit/4d1d5babde725febc5fdc7a7ccf576f3d0e3c099
- ext/opcache/jit で、optimization_level を考慮してデフォルトでは安全でない型推論を行わないよう修正
- IGNORE_OVERLOADING が無効になり opcache.optimization_level=-1 すれば有効化できるもよう

## dstogov: Replace ZVAL_COPY() and ZVAL_COPY_VALUE() for IS_OBJECT by cheaper macros
- https://github.com/php/php-src/commit/83804519dffcbb23ef689b37816ee28f2c3192e0
- [7.4~]
- IS_OBJECT で ZVAL_COPY()、ZVAL_COPY_VALUE してた箇所の局所最適化

## duncan3dc: Restore the execute bit for run-tests.php
- https://github.com/php/php-src/commit/72c330f1e6000e6b52f92c13c42bf9c620c20ddf
- run-tests.php で、実行許可ビットがなんか外れちゃってたのを戻した

## dstogov: Avoid cold code duplication
- https://github.com/php/php-src/commit/8c0b0c6a1e6868ec905ce9c4e8313a67669829c1
- [7.4~]
- メモリ確保解放系のコールドコードを関数にまとめ局所最適化

## weltling: These macros should not expect any argument
- https://github.com/php/php-src/commit/1a4ace05aedf5e9413eb089f5415dfabfe638196
- 引数をとらないマクロ RETVAL_EMPTY_ARRAY()、RETURN_EMPTY_ARRAY() がとるかのように書かれてたのを修正

## weltling: Fix conditional compilation
- https://github.com/php/php-src/commit/08a0030b33a46849ddda8bd962a6b05db0750c4a
- [7.4~]
- メモリ確保解放系の関数追加部分について条件コンパイルの修正

## krakjoe: disabled functions must not have return type
- https://github.com/php/php-src/commit/7821cc3b9f51d12f2cf391e191fef1f591cb7f35
- [7.2~]
- 無効化指定の関数については ZEND_ACC_HAS_RETURN_TYPE をクリアするよう修正

## carusogabriel: Remove unused variable
- https://github.com/php/php-src/commit/8c7757c233eb23a734b030d5f32144fe014033ca
- [7.4~]
- 不使用変数の削除

## dstogov: zend_do_fcall_overloaded() doesn't have to be exported
- https://github.com/php/php-src/commit/0d102515bf4adf102ebb889f42c86d946f0000b8
- [7.4~]
- zend_do_fcall_overloaded() を内部リンケージにしてコールドコード指定に修正

## duncan3dc: Add tests for DatePeriod properties
- https://github.com/php/php-src/commit/5d67271db07b94321cd57c5679bc6ab02070bc11
- [7.2~]
- ext/date で、DatePeriod のプロパティアクセスのテストを追加

## nikic: Specify get_property_ptr_ptr handler for DatePeriod
- https://github.com/php/php-src/commit/3bd5b83615d47e480840d50fcaab31a5463cb314
- [7.4~]
- ext/date で、7.4 から指定の必要な get_property_ptr_ptr のハンドラを追加
- NULL を返して read_property へフォールバックするだけの実装

## nikic: Remove set() object handler
- https://github.com/php/php-src/commit/31a516cf967e7558f0e06c2390fa9521309ed8b4
- set オブジェクトハンドラの削除
- 代入演算子のオーバーロードに使われていたがほぼ利用されてなかった

## derickr: Bump API numbers
- https://github.com/php/php-src/commit/8ec0cf8be72b8b7d025443a9b9510d2fbe3e4f99
- [7.4~]
- API バージョンの更新

## dstogov: Mark "cold" functions
- https://github.com/php/php-src/commit/e14d77335c5827f1a0445141efd58440a1e65db7
- [7.4~]
- ZEND_COLD 指定をいくらか追加

## nikic: Don't JIT functions with many blocks
- https://github.com/php/php-src/commit/b7a6430a52da182646844860a03fc6befbac8012
- ext/opcache/jit で、多数のブロックがある関数を JIT コンパイルしないよう修正
- 解析時の一部再帰的処理でのスタックオーバーフローの回避らしい

## nikic: Disable JIT for ext/ffi/tests/200.phpt
- https://github.com/php/php-src/commit/c7a67c6dcef5c1d07f2cdbdf11ba25166da2d5f0
- ext/ffi で、特定テストで JIT の無効化
- JIT では zend_write が実行時に変更されないことを仮定しているため
- こんなことできる FFI やべーだろ案件のため、このテストでは単に無効化でいいか、という

## dstogov: zend_assign_to_variable() optimization
- https://github.com/php/php-src/commit/b06f05bf4782c4c7110f9d974db1b70c4cda36c0
- [7.4~]
- zend_assign_to_variable() の局所最適化
- たぶん[型付き参照への代入のパスに入った時の分岐予測ヒント](https://github.com/php/php-src/commit/b06f05bf4782c4c7110f9d974db1b70c4cda36c0#diff-a5fb5fd8c4f7311c6d0788763e665daaR3050)あたりで違いが出るのだろうという気はするけどよく分からず

## nikic: Enable JIT in Travis build
- https://github.com/php/php-src/commit/e94a71b7f1539117e7ee20945127937c4ae6ce9a
- travis の設定で JIT を有効化

## nikic: Update more func info information for ext/standard
- https://github.com/php/php-src/commit/a1a8d144854acb1c891cf0c21abb0f612b1d8de7
- ext/opcache で、func_info の更新

## nikic: SCCP: Fix leak when determining TYPE_CHECK from type info
- https://github.com/php/php-src/commit/61a38bb2743ef2e76278aeeec9ec486b75e94485
- [7.4~]
- ext/opcache で、SCCP 最適化器のメモリリークの修正
- ZEND_TYPE_CHECK を ZEND_FREE に置き換えるとかやってるよーに見える

## nikic: escapeshellarg/escapeshellcmd: Throw TypeError instead of E_ERROR
- https://github.com/php/php-src/commit/07fae1fd6efec09dcd928760147682cd6a6aa354
- [escapeshellarg()](https://www.php.net/manual/ja/function.escapeshellarg.php) と [escapeshellcmd()](https://www.php.net/manual/ja/function.escapeshellcmd.php) について、NUL 文字含んだ引数を与えた際 E_ERROR にしていたのを TypeError を投げるよう修正