[ruby-cvs:54676] ko1:r47528 (trunk): * include/ruby/ruby.h, gc.c: add new internal events

ko1 at ruby-lang.org ko1 at ruby-lang.org
Thu Sep 11 17:47:01 JST 2014


ko1	2014-09-11 17:46:59 +0900 (Thu, 11 Sep 2014)

  New Revision: 47528

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=47528

  Log:
    * include/ruby/ruby.h, gc.c: add new internal events
      RUBY_INTERNAL_EVENT_GC_ENTER and
      RUBY_INTERNAL_EVENT_GC_EXIT.
      When invoking GC process, GC_ENTER event is called.
      When exiting from GC process, GC_EXIT event is called.
      Incremental GC (incremental marking and lazy sweep) can call
      these events many times.
      For example (minor marking):
      (1) GC_ENTER
      - (2) GC_START (minor GC)
        (minor marking)
      - (3) GC_END_MARK
        (start lazy sweep)
      (4) GC_EXIT
        (ruby process)
      (5) GC_ENTER
        (lazy sweep)
      (6) GC_EXIT
        (ruby process)
        (... repeat (5), (6))
      (7) GC_ENTER
          (finish lazy sweep)
        - (8) GC_END_SWEEP
      (9) GC_EXIT
      2nd example (incremental major marking):
      (1) GC_ENTER
      - (2) GC_START (minor GC)
        (start incremental marking)
      (3) GC_EXIT
        (ruby process)
      (4) GC_ENTER
        (incremental marking)
      (5) GC_EXIT
         (ruby process)
         (... repeat (4), (5))
      (6) GC_ENTER
        (finish incremental marking)
      - (7) GC_END_MARK
        (start lazy sweep)
      (8) GC_EXIT
        (ruby process)
      (9) GC_ENTER
        (lazy sweep)
      (10) GC_EXIT
        (ruby process)
        (... repeat (9), (10))
      (11) GC_ENTER
        (finish lazy marking)
      - (12) GC_STOP_SWEEP
      (13) GC_EXIT
      Thease internal events enable to measure GC pause time completely.

  Modified files:
    trunk/ChangeLog
    trunk/gc.c
    trunk/include/ruby/ruby.h


More information about the ruby-cvs mailing list