赤井と言います.

昨日のRejectRejectKaigiで発表したVM::InstructionSequence.loadのバグを報
告します.

$ruby_custom -v
ruby 1.9.0 (2008-06-23 revision 16869) [x86_64-linux]

loadで定義したメソッドをに渡る引数がずれています.

>VM::InstructionSequence.load(
>  VM::InstructionSequence.compile(
>    "def f(a,b,c);p(a,b,c);end"
>  ).to_a).eval
>f(1,2,3)
2
3
nil
=> [2, 3, nil]


また,loadでブロックを使うとブロックの引数におかしな整数が渡ります.

>VM::InstructionSequence.load(
>  VM::InstructionSequence.compile(
>    "[1,2,3].each{|x|p x}"
>  ).to_a).eval
70014636118636
70014636118636
70014636118636
=> [1, 2, 3]