LoginSignup
3
0

More than 5 years have passed since last update.

php-master-changes 2018-08-21

Last updated at Posted at 2018-08-21

2018-08-21

devnexen: Avoid directly adding to string literal

dstogov: Removed dead code

devnexen: Support fixed address mmap without replacement

  • https://github.com/php/php-src/commit/0f68ff5c92924deb9401ce66458e67f250ccde74
  • メモリアロケータの修正
  • メモリアロケータが OS から追加の領域を取ってくる際(realloc 的な)、Windows 以外では mmap() を使っていた
  • なるべく地続きのメモリ領域を確保するために MAP_FIXED が使いたかったが、MAP_FIXED はすでに別途で使われている領域を指定されると、元からいる奴をぶっ飛ばすという恐ろしいブツだったため、使えなかった
  • 最近めに MAP_FIXED_NOREPLACE という、先客がいたらぶっ飛ばさないで諦める奴が追加されたので、Linux ではそちらを使い、FreeBSD では同様の挙動の MAP_FIXED|MAP_EXCL を使うようになった
  • これ元実装では先客がいたら別の箇所を確保して返すだけだったけど、修正後だと単に諦めてしまうの、別によいのだろうか、という気持ち
    • 聞いてみたところ、「元の奴ずれたら munmap() してたので意図通りやでー、でもこの際 munmap() に失敗しない限りエラーメッセージは出してなかったので、エラー時の処理はびみょそう」というがあった
    • そんでスッと PR がきた https://github.com/php/php-src/pull/3456 ので親指だけ立てといた

dstogov: Don't use second operand of BIND_STATIC instruction.

dstogov: Cleanup

  • https://github.com/php/php-src/commit/168376e98e533f9f99159d9f5516e03ab823a302
  • ext/opcache で関数テーブル/クラスエントリの破棄処理をリファクタリング
  • 元コードでは関数テーブルとクラスエントリのデストラクタをオーバーライドする所があった
  • 関数テーブルのデストラクタは、対象がユーザ定義関数で、静的変数があって immutable でなくて、参照カウントを 1 つ減らして 0 になるようなら、静的変数のハッシュテーブルを破棄、というもの
  • クラスのデストラクタは、そのクラスの関数テーブルを同様の処理でオーバーライドするもの
  • これらのオーバーライドされたデストラクタは、free_persistent_script() の第 2 引数が 1 のケースで呼ばれる
  • free_persistent_script() の第 2 引数へ 1 を渡して呼ぶ箇所は同時に zend_accel_free_user_functions() を呼ぶ箇所でもあり、なのでそっちにハッシュテーブルの破棄処理を移動した形のもよう
  • 元コードは黙って efree() な感じに見えるので、破棄処理の内容も変わってそう?ここの具体的な差異までは追ってない

nikic: Drop dead code

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0