parse.y: support Symbol GC. [ruby-trunk Feature #9634] See this ticket about Symbol GC.
include/ruby/ruby.h: Declare few functions.
rb_id2str(SYM2ID(sym))
gc.c: declare RSymbol. support T_SYMBOL.
internal.h: Declare few functions.
string.c (Init_String): String#intern and String#to_sym use rb_str_dynamic_intern.
template/id.h.tmpl: use LSB of ID as a flag for determining a static symbol, so we shift left other ruby_id_types.
string.c: use rb_sym2str instead rb_id2str(SYM2ID(sym)) to avoid pinning.
load.c: use xx_without_pindown function at creating temporary ID to avoid pinning.
object.c: ditto.
sprintf.c: ditto.
struct.c: ditto.
thread.c: ditto.
variable.c: ditto.
vm_method.c: ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45426 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
parse.y: support Symbol GC. [ruby-trunk Feature #9634]
See this ticket about Symbol GC.
include/ruby/ruby.h:
Declare few functions.
rb_id2str(SYM2ID(sym))
but notpin down a dynamic symbol.
Declare a new struct.
Ruby's heaps.
Add few macros.
gc.c: declare RSymbol. support T_SYMBOL.
internal.h: Declare few functions.
function at a sweep phase.
string.c (Init_String): String#intern and String#to_sym use
rb_str_dynamic_intern.
template/id.h.tmpl: use LSB of ID as a flag for determining a
static symbol, so we shift left other ruby_id_types.
string.c: use rb_sym2str instead
rb_id2str(SYM2ID(sym))
toavoid pinning.
load.c: use xx_without_pindown function at creating temporary ID
to avoid pinning.
object.c: ditto.
sprintf.c: ditto.
struct.c: ditto.
thread.c: ditto.
variable.c: ditto.
vm_method.c: ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45426 b2dd03c8-39d4-4d8f-98ff-823fe69b080e