From: "きたざわけんいち" Date: 2011-03-06T15:08:35+09:00 Subject: [ruby-dev:43315] Re: iseq_compile_each()でのマジックナンバ きたざわです。 #ささださんと話しができるなんて幸せだなぁ >> Index: vm_core.h >> =================================================================== >> --- vm_core.h (リビジョン 31028) >> +++ vm_core.h (作業コピー) >> @@ -583,6 +583,12 @@ >> #define RUBYVM_CFUNC_FRAME_P(cfp) \ >> (VM_FRAME_TYPE(cfp) == VM_FRAME_MAGIC_CFUNC) >> >> +/* vm_throw state */ >> +#define VM_THROW_GET_DFP 0x8000 > >  これ,何やってるんでしたっけ.コード見たけど思い出せない....なんか, > これが設定されていると,逆に dfp を見ていないような. あ、用途としては逆ですね。 0x8000だと、dfpを見ますよね。というか、throw命令の返り値を1にするか、dfpにするか、ですかね。 # 逆にとらえてしまったか VM_THROW_RETRUN_NOT_DFPかな? >> +#define VM_THROW_LVL_SHIFT 16 >> +#define VM_THROW_LEVEL(s) (s >> VM_THROW_LVL_SHIFT) > >  lvl って level でしょうか. そうです。VM_THROW_LEVEL_SHIFTにします。 >> +#include "eval_intern.h" > >  なぜ,eval_intern.h を include しているんでしょうか.TAG_BREAK とかを > 見るためかな.私はなぜここを即値にしたんだろう.include したくなかったか > らかなぁ. eval_intern.hをincludeするのは、TAG_xxxを見るためです。 もっとも、0x8000をセットされるようなコードが書けなくて、困ってもいるんですけどね。 > 私はなぜここを即値にしたんだろう. 人間が想起できる記憶のほうが少ないですよ。 -- --- ぺーさん(peisunstar@gmail.com)