今日は 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
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() の局所最適化
- たぶん型付き参照への代入のパスに入った時の分岐予測ヒントあたりで違いが出るのだろうという気はするけどよく分からず
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() と escapeshellcmd() について、NUL 文字含んだ引数を与えた際 E_ERROR にしていたのを TypeError を投げるよう修正