@@ -622,25 +622,36 @@ def rb_tracepoint_new(events, func, data)
622
622
623
623
def events_to_events_array ( events )
624
624
events_ary = [ ]
625
- if events . anybits? 0x0001
626
- events ^= 0x0001
627
- events_ary << :line
628
- end
629
- if events . anybits? 0x0002
630
- events ^= 0x0002
631
- events_ary << :class
625
+ parse_event = -> bits , name do
626
+ if events . anybits? bits
627
+ events ^= bits
628
+ if Symbol === name
629
+ events_ary << name
630
+ else
631
+ warn "warning: rb_tracepoint_new(#{ name } ) is not yet implemented" if $VERBOSE
632
+ events_ary << :never
633
+ end
634
+ end
632
635
end
633
636
634
- if events . anybits? 0x100000
635
- events ^= 0x100000
636
- warn 'warning: rb_tracepoint_new(RUBY_INTERNAL_EVENT_NEWOBJ) is not yet implemented' if $VERBOSE
637
- events_ary << :never
638
- end
639
- if events . anybits? 0x200000
640
- events ^= 0x200000
641
- warn 'warning: rb_tracepoint_new(RUBY_INTERNAL_EVENT_FREEOBJ) is not yet implemented' if $VERBOSE
642
- events_ary << :never
643
- end
637
+ parse_event [ 0x0001 , :line ]
638
+ parse_event [ 0x0002 , :class ]
639
+ parse_event [ 0x0004 , :end ]
640
+ parse_event [ 0x0008 , :call ]
641
+ parse_event [ 0x0010 , :return ]
642
+ parse_event [ 0x0020 , :c_call ]
643
+ parse_event [ 0x0040 , :c_return ]
644
+ parse_event [ 0x0080 , :raise ]
645
+
646
+ parse_event [ 0x0100 , :b_call ]
647
+ parse_event [ 0x0200 , :b_return ]
648
+ parse_event [ 0x0400 , :thread_begin ]
649
+ parse_event [ 0x0800 , :thread_end ]
650
+ parse_event [ 0x1000 , :fiber_switch ]
651
+ parse_event [ 0x2000 , :script_compiled ]
652
+
653
+ parse_event [ 0x100000 , 'RUBY_INTERNAL_EVENT_NEWOBJ' ]
654
+ parse_event [ 0x200000 , 'RUBY_INTERNAL_EVENT_FREEOBJ' ]
644
655
645
656
raise ArgumentError , "unknown event #{ '%#x' % events } " unless events == 0
646
657
events_ary
0 commit comments