Ruby1.9でのダンプの仕方

1.9ではVMの命令にダンプできます。

puts RubyVM::InstructionSequence.new('puts "hoge"').disasm

ほかにeval、to_aとかが使える。

== disasm: <RubyVM::InstructionSequence:<compiled>@<compiled>>==========
0000 trace            1                                               (   1)
0002 putnil           
0003 putstring        "hoge"
0005 send             :puts, 1, nil, 8, <ic>
0011 leave            

--dump=insns

RubyVM::InstructionSequenceは廃止されるらしいので--dump=insnsオプションを使いましょう。1.9.2devでは使えました。

ruby --dump=insns -e 'puts "hoge"'