[ruby-dev:50640] Re: [ruby-cvs:71946] ko1:r64854 (trunk): fix OPT_CALL_THREADED_CODE issue.

From: Koichi Sasada <ko1@...>
Date: 2018-09-28 00:57:04 UTC
List: ruby-dev #50640
ありがとうございます。その通りですね。
この変更の動機は、CI で色々 config 変えて調査しよう、ってところでした。

色々考えたんですが、このファイルを生成するようにしましょうか。

* src/tool/vmconfig-gen.rb
   -> src/vm_opts.h を生成
   * src/tool/vmconfig-gen.rb にはデフォルト値を与える
      * 環境変数によって値を変える
* src/took/生成系は vmconfig-gen.rb を参照(してもよい)
   * vm_opts.h 読むより、ちょっと楽になる可能性がある
   * が、すでに vm_opts.h を読むコードが存在するので、しなくてもよい
   * 環境変数が、生成系利用時と vm_opts.h で違うことを考えないといけない

どうでしょう。

On 2018/09/27 10:16, Urabe, Shyouhei wrote:
> 笹田さん、
> 
> On Wed, Sep 26, 2018 at 5:11 PM <ko1@ruby-lang.org> wrote:
>>
>> ko1     2018-09-26 17:11:05 +0900 (Wed, 26 Sep 2018)
>>
>>    New Revision: 64854
>>
>>    https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=64854
>>
>>    Log:
>>      fix OPT_CALL_THREADED_CODE issue.
>>
>>      * insns.def (opt_send_without_block): reorder insn position because
>>        `opt_str_freeze` insn refer this insn (function) when
>>        OPT_CALL_THREADED_CODE is true.
>>
>>      * vm_opts.h (OPT_THREADED_CODE): introduce new macro to select
>>        threaded code implementation with a compile option (-D...).
> 
> このコミットでvm_opts.hに新たなディレクティブ(つまり#ifndef)が導入されてしまったのですが。
> vm_opts.hはVM生成系が読むファイルだから、VM生成時とコンパイル時でマクロの値が違ってくると色々と前提が壊れませんか?
> 今回に限って言うと、たまたま齟齬は発生しないようですが…
> 
> - VM生成時とコンパイル時でマクロが同じかどうかを検証する仕組みを入れる
> - VM生成系はvm_opts.hを読まないことにする
> 
> といった対策が考えられるかと思います。どうするのがいいですか?
> 

-- 
// SASADA Koichi at atdot dot net

In This Thread