Project

General

Profile

« Previous | Next » 

Revision 96815f1e

Added by ko1 (Koichi Sasada) over 11 years ago

  • symbol.c: remove rb_gc_mark_symbols().
    fstrings refered by static symbols and pinned dynamic symbols
    are registerd by rb_gc_register_mark_object().
    frstring refered by dynamic symbols (not pinned symbols)
    are refered from global_symbols.dsymbol_fstr_hash (Hash object).
    Note that fstrings refered from dynamic symbols must live loger
    than symbol objects themselves because rb_gc_free_dsymbol() uses
    fstring to remove from symbol tables.
    This is why we can not mark fstrings from dynamic symbols.
    This technique reduces root objects for GC marking.
  • gc.c (gc_mark_roots): ditto.
  • internal.h: ditto.

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