From: "きたざわけんいち" Date: 2011-02-27T13:39:57+09:00 Subject: [ruby-dev:43276] iseq_compile_each()でのマジックナンバ きたざわです。 はじめまして。 はじめてポストするので、devなのかlistなのか迷ったのですが、ソースコードに関する ことなので、こちらにポストします。 とんちんかんだったら指摘してください。 iseq_compile_each()のNODE_BREAK/NODE_NEXTあたりで、変数levelに対する マジックナンバが気になるのでパッチを当てようかと思っています。 で、どうしてもわからないことがあるので教えてください。 case NODE_BREAKのあとで、 level++; if (ip->compile_data->redo_label != 0) { level = 0x8000; if (ip->compile_data->loopval_popped == 0) { /* need value */ level |= 0x4000; } goto break_by_insn; } というコードがあるのですが、0x4000の意味(用途)がわかりません。 vm_throw()ではこの値(ビット)をみていないようなのです。 need valueというコメントがあるので、必要っぽい感じなのですが、 デバッグ用に使うくらいしか思いつかないのです。 よろしくお願い致します。 -- --- ぺーさん(peisunstar@gmail.com)