mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
symbol.c (rb_id2str): eliminate branch to set class
Since the fstring table encompasses all strings in the symbol table, we may reuse the fstring table walk to set the class and eliminate the branch in rb_id2str. * string.c (Init_String): use rb_cString immediately after definition * symbol.c (rb_id2str): eliminate branch to set class git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57521 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
257bf9c0d0
commit
b0cfa46bce
2 changed files with 3 additions and 12 deletions
5
string.c
5
string.c
|
@ -10036,6 +10036,8 @@ Init_String(void)
|
|||
#define rb_intern(str) rb_intern_const(str)
|
||||
|
||||
rb_cString = rb_define_class("String", rb_cObject);
|
||||
assert(rb_vm_fstring_table());
|
||||
st_foreach(rb_vm_fstring_table(), fstring_set_class_i, rb_cString);
|
||||
rb_include_module(rb_cString, rb_mComparable);
|
||||
rb_define_alloc_func(rb_cString, empty_str_alloc);
|
||||
rb_define_singleton_method(rb_cString, "try_convert", rb_str_s_try_convert, 1);
|
||||
|
@ -10215,7 +10217,4 @@ Init_String(void)
|
|||
rb_define_method(rb_cSymbol, "swapcase", sym_swapcase, -1);
|
||||
|
||||
rb_define_method(rb_cSymbol, "encoding", sym_encoding, 0);
|
||||
|
||||
assert(rb_vm_fstring_table());
|
||||
st_foreach(rb_vm_fstring_table(), fstring_set_class_i, rb_cString);
|
||||
}
|
||||
|
|
10
symbol.c
10
symbol.c
|
@ -744,15 +744,7 @@ rb_sym2str(VALUE sym)
|
|||
VALUE
|
||||
rb_id2str(ID id)
|
||||
{
|
||||
VALUE str;
|
||||
|
||||
if ((str = lookup_id_str(id)) != 0) {
|
||||
if (RBASIC(str)->klass == 0)
|
||||
RBASIC_SET_CLASS_RAW(str, rb_cString);
|
||||
return str;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return lookup_id_str(id);
|
||||
}
|
||||
|
||||
const char *
|
||||
|
|
Loading…
Add table
Reference in a new issue