今日は関数呼び出し処理周りのリファクタリングと JIT でのコード生成の改善、tsrm_env_lock() を返り値 void に変更する修正、sizeof を ZEND_COUNT にコンパイルするようにする修正、各所のコンパイラ警告潰し、JIT がサポートされていないアーキテクチャではビルドしないようにし、phpinfo() で有効/無効と使用不可を出すようにする修正、call_user_func() が static メソッドに $this を渡していた問題の修正、不要コードの削除、libmagic.patch を生成するスクリプトの追加、テストでの期待するエラーメッセージの文言修正、opcache での VirtualProtect() のメモリサイズ指定修正、readdir_r() でなく readdir() を使うようにする修正があった!
2019-04-11
dstogov: Simplify call frame initialization
- https://github.com/php/php-src/commit/cc900edd775dc87e74b5412e7cea324a60a01e74
- コールフレームの初期化を単純化
- object_or_called_scope で 2 引数を 1 引数にまとめたりしてるけど、パッと見よくわかんないな
dstogov: Removed old constants (they are redeclared as macros)
- https://github.com/php/php-src/commit/77c522062af20a19d02ec9c612721329fce38588
- ↑でマクロ定義に移行した古い enum の削除
dstogov: Check for ZEND_CALL_RELEASE_THIS only if ZEND_CALL_CLOSURE is not set
- https://github.com/php/php-src/commit/c97e3158ed7dae184ae2a5ae3e08d1d2eccbc3a6
- ZEND_CALL_RELEASE_THIS のチェックを ZEND_CALL_CLOSURE がセットされてないときのみ行うよう修正
- ZEND_CALL_RELEASE_THIS は $this の参照カウント操作を行うかどうかのフラグ
- シンボルの由来みたいな情報を気付いた時知った時に書き集めていく Wiki っぽいのが欲しくなってきた
nikic: Make tsrm_env_lock() void
- https://github.com/php/php-src/commit/b213f13a2621ec553beec06d3e2f163c1e7e2282
- [7.4~]
- tsrm_env_lock() を返り値 void に変更
- NTS 版で警告出てたらしい
nikic: Generate ZEND_COUNT for sizeof()
- https://github.com/php/php-src/commit/30df87f77d87d446afbfa4c9d2e0a1a643cc4bdc
- [7.4~]
- sizeof について count と同様に専用オペコード ZEND_COUNT にコンパイルするよう修正
- 違ってたんかーい、くらいの話
nikic: Suppress write() warnings in jit_perf_dump.c
- https://github.com/php/php-src/commit/0351552e1eb4b71360dd2f0c77e7aa1942f8346d
- ext/opcache/jit で、jit_perf_dump.c のコンパイラ警告潰し
- ZEND_IGNORE_VALUE は値を使わないときの警告潰し用マクロ
nikic: Mark zend_jit_print_regset as unused
- https://github.com/php/php-src/commit/d31104faccd8b702cc6c7a365eb70a4ab81d9498
- ext/opcache/jit で、普段使わないデバッグ用関数に ZEND_ATTRIBUTE_UNUSED を足してコンパイラ警告潰し
nikic: Fix incompatible pointer warning in zend_test
- https://github.com/php/php-src/commit/ee45565a2a6c359d4e80d6e04c8e047c85d6a2af
- ext/zend_test のコンパイラ警告潰し
nikic: Don't build JIT if the host architecture doesn't support it
- https://github.com/php/php-src/commit/b2fb753e85ce36ffd0141013a6eccbf0043d7392
- ext/opcache で、JIT がサポートされていないアーキテクチャではビルドしないよう修正
- phpinfo() でも有効/無効と使えないのと区別して出すように
nikic: Suppress warnings using zend_quiet_write
- https://github.com/php/php-src/commit/d087a356feae73f223c5fdccd694d7af4e44601a
- [7.4~]
- zend_quiet_write() を使ってコンパイラの警告潰し
- zend_quiet_write() は ZEND_IGNORE_VALUE の付いた write() に展開されるマクロ
nikic: Use zend_quiet_write instead of ZEND_IGNORE_VALUE
- https://github.com/php/php-src/commit/9825d68c081fe9a8f3b2cc4a9d08205905277112
- 「そういやこんなのあったわ」的に ZEND_IGNORE_VALUE(write()) を zend_quiet_write() に書き換え
nikic: Avoid onig match param unused variable warning
- https://github.com/php/php-src/commit/a61d24e4d8350b9bd749ca74bdaed422c6caa830
- [7.3~]
- ext/mbstring で、不使用変数のコンパイラ警告潰し
nikic: Fix opcache build without JIT
- https://github.com/php/php-src/commit/6dd745042750993ade9426637a2cae71d8078b8d
- ext/opcache で、JIT なし版のビルドができなかったので条件コンパイルの追加
dstogov: Fixed bug #77877 (call_user_func() passes $this to satatic methods).
- https://github.com/php/php-src/commit/a1b7ccdfc69a1ad9938039f687ad7059ed1bd506
- [7.4~]
- call_user_func() が static メソッドに $this を渡していた問題の修正
sebastianbergmann: Fix typo
dstogov: Improved code generated for RETURN in methpods and closures
- https://github.com/php/php-src/commit/6d232eec035baeb940d3a3c706dd830524f1f79f
- ext/opcache/jit で、メソッド/クロージャからの return 用のコード生成を改善
- このアセンブリ言語と C が混じってるこの感じ、をうまいこと読む心の目というか心構えというか前提知識というかの補充が要る気する
nikic: Avoid curl ssl callback warnings with OpenSSL 1.1
- https://github.com/php/php-src/commit/539a16fdb8a195544656c09282484445af8fe161
- ext/curl で、OpenSSL 1.1 以降では条件コンパイルで使われなくなるコールバック関数に ZEND_ATTRIBUTE_UNUSED を付けてコンパイラ警告潰し
nikic: Remove unused rcsid variables
- https://github.com/php/php-src/commit/29eb35616af715dffc443f0517e3fcfb8b5e4827
- ext/xmlrpc で、使われていない変数 rcsid の削除
- rcsid ってなんじゃらほいという向きもあろうけど、このへんについては tnozaki さんの *BSD の事例でのとあわせた解説が分かりやすい(し面白い)
- ident の指定もないのでまあいらねえんだろっていう
nikic: Fix pointer signedness warning in mysqlnd
- https://github.com/php/php-src/commit/651fd1a96249940412f79352cb10ce61cc83d5c7
- ext/mysqlnd で、ポインタの符号の警告潰し
nikic: Remove the readline thread-safety warning
- https://github.com/php/php-src/commit/2916ecabe09953af7b3e6cf724a8c61a5058c1f2
- [7.4~]
- ext/readline で、スレッドセーフじゃねえぞという警告を削除
- まあビルトシステム側での対応の方がというのはそうだけれど、対応する前の削除要るのか?これ
weltling: Avoid code duplication
- https://github.com/php/php-src/commit/853f881bd170e252537f3107ae2202f9832d78d4
- ext/opcache で、JIT 実装との重複コードの除去
nikic: Add script to generate libmagic.patch
- https://github.com/php/php-src/commit/f6521659ca9c8dc668ea60d3627a2f1a14cd5773
- ext/fileinfo で、libmagic.patch を生成するスクリプトの追加
nikic: Fix libmagic warnings
- https://github.com/php/php-src/commit/b65cb7e2aa298ef316b5b8a46d918868e5a793a2
- ext/fileinfo で、libmagic のコンパイラ警告潰し
nikic: Fix error message in spl_autoload test
- https://github.com/php/php-src/commit/2d823cb6811cf51675693d4405b4f16f75acac2b
- [7.4~]
- ext/spl で、テストでの期待するエラーメッセージの文言修正
nikic: Remove restrict zend_portability define
- https://github.com/php/php-src/commit/c51eafe931464e920c628b9cfa03a26878f352fb
- zend_portability.h で、restrict の条件コンパイルを除去
- 使ってないしコンパイラ警告も出ていたとのこと
nikic: Remove unused function prototype
- https://github.com/php/php-src/commit/44a1cd4fcdcf3ead6cf412c7fc2d3fd2ca855d5f
- ext/mbstring で、使われていない関数プロトタイプの削除
weltling: Fix VirtualProtect memory size
- https://github.com/php/php-src/commit/f4628436df9492cd00465ba1f29d3c71dded17cc
- ext/opcache で、VirtualProtect() のメモリサイズ指定を修正
nikic: Remove incorrect mbstring includes
- https://github.com/php/php-src/commit/ca47732eee6ed07ac88f427cacb7a27caeaf7845
- ext/mbstring で、不要な include を削除
nikic: Fix libgd warnings
- https://github.com/php/php-src/commit/9d663cba1abed1697dce5f73a7177ad2d7beaeb7
- [7.4~]
- ext/gd で、libgd のコンパイラ警告の修正
nikic: Remove curl gnutls locking
- https://github.com/php/php-src/commit/3e0f9c2c94d1511eaf30f8f1de8260f5821c985f
- ext/curl で、gcrypt 用のロックコードを削除
- GnuTLS は gcrypt から nettle に移行しており、いらねえやということみたい
nikic: Use readdir() instead of readdir_r()
- https://github.com/php/php-src/commit/2b28f7189144a21e753dbc09efadd571121a82b9
- readdir_r() でなく readdir() を使うよう修正
- 非 glibc でスレッドセーフでない readdir() 実装を持つ環境で PHP のスレッドセーフ版を使うことがありえるか?なんて分からないのでモニョるっちゃモニョる