Skip to content

Commit

Permalink
Rewrite Symbol#to_sym and #intern in Ruby (#6683)
Browse files Browse the repository at this point in the history
  • Loading branch information
k0kubun committed Nov 16, 2022
1 parent 41b0f64 commit e7443db
Show file tree
Hide file tree
Showing 6 changed files with 24 additions and 19 deletions.
1 change: 1 addition & 0 deletions .document
Expand Up @@ -23,6 +23,7 @@ nilclass.rb
pack.rb
ractor.rb
string.rb
symbol.rb
timev.rb
thread_sync.rb
trace_point.rb
Expand Down
5 changes: 5 additions & 0 deletions common.mk
Expand Up @@ -1104,6 +1104,7 @@ BUILTIN_RB_SRCS = \
$(srcdir)/array.rb \
$(srcdir)/kernel.rb \
$(srcdir)/ractor.rb \
$(srcdir)/symbol.rb \
$(srcdir)/timev.rb \
$(srcdir)/thread_sync.rb \
$(srcdir)/nilclass.rb \
Expand Down Expand Up @@ -9600,6 +9601,7 @@ miniinit.$(OBJEXT): {$(VPATH)}ruby_atomic.h
miniinit.$(OBJEXT): {$(VPATH)}shape.h
miniinit.$(OBJEXT): {$(VPATH)}st.h
miniinit.$(OBJEXT): {$(VPATH)}subst.h
miniinit.$(OBJEXT): {$(VPATH)}symbol.rb
miniinit.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
miniinit.$(OBJEXT): {$(VPATH)}thread_native.h
miniinit.$(OBJEXT): {$(VPATH)}thread_sync.rb
Expand Down Expand Up @@ -15425,6 +15427,7 @@ symbol.$(OBJEXT): {$(VPATH)}backward/2/limits.h
symbol.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
symbol.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
symbol.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
symbol.$(OBJEXT): {$(VPATH)}builtin.h
symbol.$(OBJEXT): {$(VPATH)}config.h
symbol.$(OBJEXT): {$(VPATH)}constant.h
symbol.$(OBJEXT): {$(VPATH)}debug_counter.h
Expand Down Expand Up @@ -15597,6 +15600,8 @@ symbol.$(OBJEXT): {$(VPATH)}st.h
symbol.$(OBJEXT): {$(VPATH)}subst.h
symbol.$(OBJEXT): {$(VPATH)}symbol.c
symbol.$(OBJEXT): {$(VPATH)}symbol.h
symbol.$(OBJEXT): {$(VPATH)}symbol.rb
symbol.$(OBJEXT): {$(VPATH)}symbol.rbinc
symbol.$(OBJEXT): {$(VPATH)}vm_debug.h
symbol.$(OBJEXT): {$(VPATH)}vm_sync.h
thread.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
Expand Down
1 change: 1 addition & 0 deletions inits.c
Expand Up @@ -99,6 +99,7 @@ rb_call_builtin_inits(void)
BUILTIN(warning);
BUILTIN(array);
BUILTIN(kernel);
BUILTIN(symbol);
BUILTIN(timev);
BUILTIN(thread_sync);
BUILTIN(yjit);
Expand Down
19 changes: 0 additions & 19 deletions string.c
Expand Up @@ -11524,23 +11524,6 @@ rb_sym_to_s(VALUE sym)
return str_new_shared(rb_cString, rb_sym2str(sym));
}

/*
* call-seq:
* to_sym -> self
*
* Returns +self+.
*
* Symbol#intern is an alias for Symbol#to_sym.
*
* Related: String#to_sym.
*/

static VALUE
sym_to_sym(VALUE sym)
{
return sym;
}

MJIT_FUNC_EXPORTED VALUE
rb_sym_proc_call(ID mid, int argc, const VALUE *argv, int kw_splat, VALUE passed_proc)
{
Expand Down Expand Up @@ -12107,8 +12090,6 @@ Init_String(void)
rb_define_method(rb_cSymbol, "to_s", rb_sym_to_s, 0);
rb_define_method(rb_cSymbol, "id2name", rb_sym_to_s, 0);
rb_define_method(rb_cSymbol, "name", rb_sym2str, 0); /* in symbol.c */
rb_define_method(rb_cSymbol, "intern", sym_to_sym, 0);
rb_define_method(rb_cSymbol, "to_sym", sym_to_sym, 0);
rb_define_method(rb_cSymbol, "to_proc", rb_sym_to_proc, 0); /* in proc.c */
rb_define_method(rb_cSymbol, "succ", sym_succ, 0);
rb_define_method(rb_cSymbol, "next", sym_succ, 0);
Expand Down
2 changes: 2 additions & 0 deletions symbol.c
Expand Up @@ -22,6 +22,7 @@
#include "ruby/st.h"
#include "symbol.h"
#include "vm_sync.h"
#include "builtin.h"

#ifndef USE_SYMBOL_GC
# define USE_SYMBOL_GC 1
Expand Down Expand Up @@ -1262,3 +1263,4 @@ rb_is_local_name(VALUE name)
}

#include "id_table.c"
#include "symbol.rbinc"
15 changes: 15 additions & 0 deletions symbol.rb
@@ -0,0 +1,15 @@
class Symbol
# call-seq:
# to_sym -> self
#
# Returns +self+.
#
# Symbol#intern is an alias for Symbol#to_sym.
#
# Related: String#to_sym.
def to_sym
self
end

alias intern to_sym
end

0 comments on commit e7443db

Please sign in to comment.