YARVInstructionSequence/SimpleDataFormat
proc は、次のように Ruby 仮想マシン シーケンスに変換できます。
RubyVM::InstructionSequence.of(->x{x + 1}).to_a
# => ["YARVInstructionSequence/SimpleDataFormat", 2, 0, 1,
{:arg_size=>1, :local_size=>2, :stack_max=>2},
"block in irb_binding", "(irb)", nil, 2,
:block, [:x], [1, [], 0, 0, -1, -1, 3],
[
[:redo, nil, :label_0, :label_9, :label_0, 0],
[:next, nil, :label_0, :label_9, :label_9, 0]
],
[
:label_0, 2, [:trace, 256], [:trace, 1], [:getlocal_OP__WC__0, 2],
[:putobject_OP_INT2FIX_O_1_C_],
[:opt_plus, {:mid=>:+, :flag=>256, :orig_argc=>1, :blockptr=>nil}], :label_9,
[:trace, 512], [:leave]
]
]
この形式を変換して元の式を文字列のようなもの"->x{x+1}"
またはそれに近いものに再構築する方法はありますか?
形式はRDocで次のように説明されています。