[#43284] [Ruby 1.9 - Bug #4456] [Open] Time#strftime で %F 指定子に大きな幅を指定した際の不具合 — tadayoshi funaba <redmine@...>

14 messages 2011/03/02

[#43317] [Ruby 1.9 - Bug #4474][Open] 複数のスレッドからトランザクションに入ろうとした場合のPStoreの挙動 — Masaki Matsushita <redmine@...>

9 messages 2011/03/06

[#43327] [Ruby 1.9 - Feature #4483][Open] PStoreをデフォルトで複数のスレッドから扱えるようにしたい — Masaki Matsushita <redmine@...>

10 messages 2011/03/08

[#43365] [Ruby 1.9 - Bug #4536][Open] 定数参照について1.8と1.9の違い — Yukihiro Matsumoto <matz@...>

11 messages 2011/03/29

[ruby-dev:43308] Re: iseq_compile_each()でのマジックナンバ

From: きたざわけんいち <peisunstar@...>
Date: 2011-03-05 16:16:48 UTC
List: ruby-dev #43308
きたざわです。

> というわけで、0x4000 関係のコードと loopval_popped 関係のコード
> は全部取り除いてよさそうです。

loopval_popped変数とは、
struct iseq_compile_data {
(略)
    int loopval_popped;	/* used by NODE_BREAK */

で、やはりcompile.c内で

compile.c:3204:	int prev_loopval_popped = iseq->compile_data->loopval_popped;
compile.c:3216:	iseq->compile_data->loopval_popped = 0;
compile.c:3278:	iseq->compile_data->loopval_popped = prev_loopval_popped;
compile.c:3327:	    COMPILE_(ret, "break val (while/until)",
node->nd_stts, iseq->compile_data->loopval_popped);

と、延々0が繰り返し代入されているヤツですね。

これもやっぱり使ってないんですね。
何度読んでも、不思議でたまらかったんですよ。

ってことは、COMPILE_から、COMPILE(ret, "break val (while/until)", node->nd_stts);
ですね。



-- 
---
ぺーさん(peisunstar@gmail.com)

In This Thread