2007-12-29から1日間の記事一覧

Ruby 1.9.0のバイトコードをいじり倒す(その3)

では、このVMLib::InstSeqTreeを使って、トレースを実現したいと思います。各ブロックの始まりと終わりにprintメソッドの呼び出しを追加して、ファイル名と行番号を入れるようにします。 require 'instruction' require 'pp' include VMLib iseq = VM::Instr…

Ruby 1.9.0のバイトコードをいじり倒す(その2)

VM::InstructionSequenceの簡単な使い方です。 require 'pp' iseq = VM::InstructionSequence.compile("print 'Hell world\n'") PP.pp iseq.to_a VM::InstructionSequence.load(iseq.to_a).eval 出力結果は次のようになります。 ["YARVInstructionSequence/S…

Ruby 1.9.0のバイトコードをいじり倒す(その1)

昨日の日記を書いたら、おとなり日記に入っていたsshiさんの日記(http://d.hatena.ne.jp/sshi/20071226)でVM::InstructionSequenceを使う話が出ていました。VM::InstructionSequenceは消え行く運命で、使っている人も少ないみたいですが、私は大好きなので、…