今日は $this アクセスまわりの最適化、リクエストごとのシグナルハンドラ再初期化を避けられるようなフラグ追加、opcache の最適化バグの回避、preloadig の PR マージ、iconv_mime_decode_headers() のバグ修正があった!
2018-11-14
dstogov: Replace getThis() by EX(This), when additional check is not necessary.
- https://github.com/php/php-src/commit/c6ad0b92b7d8e66a07cf75ed4abc39fe3e13e00d
- チェックが不要な箇所では getThis() を単純な EX(This) の参照に置き換え
- getThis() は オブジェクトであるかどうかのチェックを行いつつ EX(This) へアクセスするマクロ
- EX(This) は実行中コードでの $this を持つ zend_execute_data のメンバ
dstogov: Replace zend_parse_method_parameters() by zend_parse_parameters() and avoid useless checks.
- https://github.com/php/php-src/commit/54a7d03934d7b4b1b8fbc025579d275dea2bb8c2
- zend_parse_method_parameters() を zend_parse_parameters() へ置き換え、不要なチェックをなくした
dstogov: Eliminate useless $this related checks
- https://github.com/php/php-src/commit/5ebefa74cfcb52b068caf8493f6187c9825aec2f
- 不要な getThis() をもっと置き換え
dstogov: Eliminate useless $this related check
- https://github.com/php/php-src/commit/8bda22592e4a3b1c1735c6ca25d7f0404d511e53
- 不要な getThis() をもっともっと置き換え
dstogov: Added possiblity to avoid signal handlers reinitialization on each request.
- https://github.com/php/php-src/commit/53ea09e84dcc5eb199f732c7621633a8f34ce3e7
- リクエストごとのシグナルハンドラ再初期化を避けられるよう zend_signal_globals_t へメンバ追加
- 拡張なんかから触る想定?
dstogov: Fixed issues related to optimization and persitence of classes linked with interfaces, traits or internal classes.
- https://github.com/php/php-src/commit/ba99aa133c907b9d46e0f18e1461a3a89c17d4f1
- ext/opcache で、interface、trait、内部クラスとリンクされるクラスの最適化とコード保存の問題を修正
- NULL チェックをいくらか追加
- あと op_array が trait からの複製であるかを示す ZEND_ACC_TRAIT_CLONE のフラグが追加され、一部最適化の対象から除外するのに使ってるみたい
dstogov: Implemented preloading RFC: https://wiki.php.net/rfc/preload.
- https://github.com/php/php-src/commit/f6d227ed4f5d4c0276eb720806e808baceb37f10
- 7.4 向けに投票で可決された preloading の RFC の実装、PR:3538 のマージ
- PHPで簡単に永続プリロードできるようになるにどういうものかはまとまってる
- 実装については先行してマージされた immutable クラス/関数 がわりと大きい
- 共有メモリ上で不変の状態でリンクまで済ませてコードを持てるので、プロセスごとのメモリへのコピーが不要
- preloading は zend_post_startup のタイミングのケツの方で行われ、指定スクリプトを読み込んで実行した後にリンク処理が走る
cmb69: Fix #77147: Fix for 60494 ignores ICONV_MIME_DECODE_CONTINUE_ON_ERROR
- https://github.com/php/php-src/commit/a56cdd0a824d439920548aaeae757cb2341bd4ec
- [7.1~]
- ext/iconv で、iconv_mime_decode_headers() が ICONV_MIME_DECODE_CONTINUE_ON_ERROR を無視する問題の修正
- 8 月の修正 で入ったバグ