Project

General

Profile

« Previous | Next » 

Revision 680f0b5b

Added by ko1 (Koichi Sasada) almost 11 years ago

  • include/ruby/ruby.h, gc.c, vm_trace.c: add internal events.
  • RUBY_INTERNAL_EVENT_NEWOBJ: object created.
  • RUBY_INTERNAL_EVENT_FREE: object freeed.
  • RUBY_INTERNAL_EVENT_GC_START: GC started.
    And rename RUBY_EVENT_SWITCH' to RUBY_INTERNAL_EVENT_SWITCH'.
    Internal events can not invoke any Ruby program because the tracing
    timing may be critical (under huge restriction).
    These events can be hooked only by C-extensions.
    We recommend to use rb_potponed_job_register() API to call Ruby
    program safely.
    This change is mostly written by Aman Gupta (tmm1).
    https://bugs.ruby-lang.org/issues/8107#note-12
    [Feature #8107]
  • include/ruby/debug.h, vm_trace.c: added two new APIs.
  • rb_tracearg_event_flag() returns rb_event_flag_t of this event.
  • rb_tracearg_object() returns created/freeed object.
  • ext/-test-/tracepoint/extconf.rb,
    ext/-test-/tracepoint/tracepoint.c,
    test/-ext-/tracepoint/test_tracepoint.rb: add a test.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40946 b2dd03c8-39d4-4d8f-98ff-823fe69b080e