From: SASADA Koichi Date: 2011-02-17T08:37:49+09:00 Subject: [ruby-dev:43214] hook するイベントの種類  ささだです.  set_trace_func 系の API に,こんなイベントが欲しい,っていう話が結構あ るので,ちょっと整理してみました.聞いたことがある要望を全部突っ込んでみ たのですが,他に欲しいイベントってありますでしょうか.  なお,RUBY_EVENT_ALL (MASK) より上が Ruby レベルでフックを設定できる, 下が C レベルでフックを設定できる,と想定しています.arg1, arg2 は,C レ ベルのインターフェースを整理するために暫定的に付けています.これだけは必 要,とか,用途を考えるとあったほうがいい,というものを入れています(mid は微妙だと思っている).  英語でやるべきかもしれないけど,とりあえず dev に投げてみました.  聞いたことがあるけど入れてないのは,rescue されたとき,ensure されたと き,のイベント(Ruby レベル)です.用途が思い浮かばなかった. > # Event Name bit patten arg1, arg2 > RUBY_EVENT_NONE 0b00000000000000000000000000000000 > RUBY_EVENT_LINE 0b00000000000000000000000000000001 thptr, line > RUBY_EVENT_CLASS 0b00000000000000000000000000000010 thptr, klass > RUBY_EVENT_END 0b00000000000000000000000000000100 thptr, klass > RUBY_EVENT_CALL 0b00000000000000000000000000001000 thptr, mid > RUBY_EVENT_RETURN 0b00000000000000000000000000010000 thptr, mid > RUBY_EVENT_C_CALL 0b00000000000000000000000000100000 thptr, mid > RUBY_EVENT_C_RETURN 0b00000000000000000000000001000000 thptr, mid > RUBY_EVENT_RAISE 0b00000000000000000000000010000000 thptr, exeption > RUBY_EVENT_BLOCK_YIELD 0b00000000000000000000000100000000 thptr, ?? # NEW! > RUBY_EVENT_BLOCK_LEAVE 0b00000000000000000000001000000000 thptr, ?? # NEW! > RUBY_EVENT_C_BLOCK_YIELD 0b00000000000000000000010000000000 thptr, ?? # NEW! > RUBY_EVENT_C_BLOCK_LEAVE 0b00000000000000000000100000000000 thptr, ?? # NEW! > RUBY_EVENT_RESERVE_R1 0b00000000000000000001000000000000 thptr, ?? > RUBY_EVENT_RESERVE_R2 0b00000000000000000010000000000000 thptr, ?? > RUBY_EVENT_RESERVE_R3 0b00000000000000000100000000000000 thptr, ?? > RUBY_EVENT_RESERVE_R4 0b00000000000000001000000000000000 thptr, ?? > RUBY_EVENT_ALL 0b00000000000000001111111111111111 # mask > RUBY_EVENT_MASK 0b00000000000000001111111111111111 # mask > RUBY_EVENT_VM 0b00000000000000010000000000000000 # should be obsolete > RUBY_EVENT_SWITCH 0b00000000000000100000000000000000 thptr, before_thptr # obsolete? > RUBY_EVENT_COVERAGE 0b00000000000001000000000000000000 thptr, ?? > RUBY_EVENT_CONTEXT_CHANGED 0b00000000000010000000000000000000 thptr, before_thptr # NEW! > RUBY_EVENT_CONTEXT_TERMINATED 0b00000000000100000000000000000000 thptr, ?? # NEW! > RUBY_EVENT_GVL_ACQUIRE 0b00000000001000000000000000000000 thptr, ?? # NEW! > RUBY_EVENT_GVL_RELEASE 0b00000000010000000000000000000000 thptr, ?? # NEW! > RUBY_EVENT_GC_MARK 0b00000000100000000000000000000000 thptr, ?? # NEW! > RUBY_EVENT_GC_SWEEP 0b00000001000000000000000000000000 thptr, ?? # NEW! > RUBY_EVENT_OBJNEW 0b00000010000000000000000000000000 thptr, obj # NEW! > RUBY_EVENT_OBJFREE 0b00000100000000000000000000000000 thptr, obj # NEW! > RUBY_EVENT_INTERRUPTED 0b00001000000000000000000000000000 thptr, ?? # NEW! > RUBY_EVENT_VM_CREATED 0b00010000000000000000000000000000 thptr, ?? # NEW! > RUBY_EVENT_VM_TERMINATED 0b00100000000000000000000000000000 thptr, ?? # NEW! > RUBY_EVENT_RESERVE_C1 0b01000000000000000000000000000000 thptr, ?? > RUBY_EVENT_RESERVE_C2 0b10000000000000000000000000000000 thptr, ?? -- // SASADA Koichi at atdot dot net