Actions
Feature #4871
closedenvのコンパクト化
Feature #4871:
envのコンパクト化
Status:
Closed
Assignee:
-
Target version:
-
Description
=begin
辻本です。
rb_env_tのenvは以下の構造を持ちますが、env[2](prev env val)は不要ではないでしょうか。
/*
env{
env[0] // special (block or prev env)
env[1] // env object
env[2] // prev env val
};
*/
根拠は次の通りです。
- prev env valに無条件にNULLを代入するようにコードを変更してもmake test、make test-allをパスする。
- コードを読む限りこの値が使われるのはcheck_envの中で値をデバッグ用に出力するときのみ。
- check_envはPROC_DEBUGが真でない限り呼ばれない。通常は偽。
- そもそもcheck_envはYARVがマージされて以来変更されておらず、現在のenvの構造に対応できていない。
prev env valを持たないようにした上でcheck_envをこの変更に対応させたパッチを添付します。
なお、check_envはstdout/stderr両方にデバッグメッセージを出力するため
flushのタイミングによっては出力が混在して見づらいので
出力先をstderrに統一するためのパッチもあわせて用意しました。
=end
Files
Actions