From: "きたざわけんいち" Date: 2011-03-06T01:16:48+09:00 Subject: [ruby-dev:43308] Re: iseq_compile_each()でのマジックナンバ きたざわです。 > というわけで、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)