[前][次][番号順一覧][スレッド一覧]

ruby-changes:7135

From: nobu <ko1@a...>
Date: Sat, 16 Aug 2008 09:21:00 +0900 (JST)
Subject: [ruby-changes:7135] Ruby:r18653 (trunk): * include/ruby/ruby.h (rb_intern_const): tiny optimization.

nobu	2008-08-16 09:20:31 +0900 (Sat, 16 Aug 2008)

  New Revision: 18653

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

  Log:
    * include/ruby/ruby.h (rb_intern_const): tiny optimization.

  Modified files:
    trunk/ChangeLog
    trunk/array.c
    trunk/compar.c
    trunk/compile.c
    trunk/complex.c
    trunk/encoding.c
    trunk/enum.c
    trunk/hash.c
    trunk/id.c
    trunk/include/ruby/ruby.h
    trunk/io.c
    trunk/load.c
    trunk/marshal.c
    trunk/numeric.c
    trunk/object.c
    trunk/prec.c
    trunk/range.c
    trunk/rational.c
    trunk/string.c
    trunk/thread.c
    trunk/time.c
    trunk/vm_method.c

Index: complex.c
===================================================================
--- complex.c	(revision 18652)
+++ complex.c	(revision 18653)
@@ -1364,6 +1364,7 @@
 Init_Complex(void)
 {
 #undef rb_intern
+#define rb_intern(str) rb_intern_const(str)
 
     assert(fprintf(stderr, "assert() is now active\n"));
 
Index: array.c
===================================================================
--- array.c	(revision 18652)
+++ array.c	(revision 18653)
@@ -3476,6 +3476,7 @@
 Init_Array(void)
 {
 #undef rb_intern
+#define rb_intern(str) rb_intern_const(str)
 
     rb_cArray  = rb_define_class("Array", rb_cObject);
     rb_include_module(rb_cArray, rb_mEnumerable);
Index: encoding.c
===================================================================
--- encoding.c	(revision 18652)
+++ encoding.c	(revision 18653)
@@ -1172,6 +1172,7 @@
 Init_Encoding(void)
 {
 #undef rb_intern
+#define rb_intern(str) rb_intern_const(str)
     VALUE list;
     int i;
 
Index: time.c
===================================================================
--- time.c	(revision 18652)
+++ time.c	(revision 18653)
@@ -2353,6 +2353,7 @@
 Init_Time(void)
 {
 #undef rb_intern
+#define rb_intern(str) rb_intern_const(str)
 
     id_divmod = rb_intern("divmod");
     id_mul = rb_intern("*");
Index: include/ruby/ruby.h
===================================================================
--- include/ruby/ruby.h	(revision 18652)
+++ include/ruby/ruby.h	(revision 18653)
@@ -830,6 +830,12 @@
     (__builtin_constant_p(str) ? \
         __extension__ (CONST_ID_CACHE(/**/, str)) : \
         rb_intern(str))
+#define rb_intern_const(str) \
+    (__builtin_constant_p(str) ? \
+     __extension__ (rb_intern2(str, strlen(str))) :	\
+     (rb_intern)(str))
+#else
+#define rb_intern_const(str) rb_intern2(str, strlen(str))
 #endif
 
 const char *rb_class2name(VALUE);
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 18652)
+++ ChangeLog	(revision 18653)
@@ -1,5 +1,7 @@
-Sat Aug 16 08:52:55 2008  Nobuyoshi Nakada  <nobu@r...>
+Sat Aug 16 09:20:18 2008  Nobuyoshi Nakada  <nobu@r...>
 
+	* include/ruby/ruby.h (rb_intern_const): tiny optimization.
+
 	* include/ruby/ruby.h (SSIZET2NUM, NUM2SSIZET, SSIZE_MAX, SSIZE_MIN):
 	  macros for ssize_t.
 
Index: enum.c
===================================================================
--- enum.c	(revision 18652)
+++ enum.c	(revision 18653)
@@ -1803,6 +1803,7 @@
 Init_Enumerable(void)
 {
 #undef rb_intern
+#define rb_intern(str) rb_intern_const(str)
 
     rb_mEnumerable = rb_define_module("Enumerable");
 
Index: string.c
===================================================================
--- string.c	(revision 18652)
+++ string.c	(revision 18653)
@@ -6611,6 +6611,7 @@
 Init_String(void)
 {
 #undef rb_intern
+#define rb_intern(str) rb_intern_const(str)
 
     rb_cString  = rb_define_class("String", rb_cObject);
     rb_include_module(rb_cString, rb_mComparable);
Index: object.c
===================================================================
--- object.c	(revision 18652)
+++ object.c	(revision 18653)
@@ -2428,6 +2428,7 @@
 Init_Object(void)
 {
 #undef rb_intern
+#define rb_intern(str) rb_intern_const(str)
 
     VALUE metaclass;
 
Index: io.c
===================================================================
--- io.c	(revision 18652)
+++ io.c	(revision 18653)
@@ -7613,6 +7613,7 @@
 Init_IO(void)
 {
 #undef rb_intern
+#define rb_intern(str) rb_intern_const(str)
 
     VALUE rb_cARGF;
 #ifdef __CYGWIN__
Index: load.c
===================================================================
--- load.c	(revision 18652)
+++ load.c	(revision 18653)
@@ -675,13 +675,15 @@
 void
 Init_load()
 {
+#undef rb_intern
+#define rb_intern(str) rb_intern2(str, strlen(str))
     rb_vm_t *vm = GET_VM();
-    const char *var_load_path = "$:";
-    ID id_load_path = rb_intern(var_load_path);
+    static const char var_load_path[] = "$:";
+    ID id_load_path = rb_intern2(var_load_path, sizeof(var_load_path)-1);
 
-    rb_define_hooked_variable(var_load_path, (VALUE*)GET_VM(), load_path_getter, 0);
-    rb_alias_variable((rb_intern)("$-I"), id_load_path);
-    rb_alias_variable((rb_intern)("$LOAD_PATH"), id_load_path);
+    rb_define_hooked_variable(var_load_path, (VALUE*)vm, load_path_getter, 0);
+    rb_alias_variable(rb_intern("$-I"), id_load_path);
+    rb_alias_variable(rb_intern("$LOAD_PATH"), id_load_path);
     vm->load_path = rb_ary_new();
 
     rb_define_virtual_variable("$\"", get_loaded_features, 0);
Index: compile.c
===================================================================
--- compile.c	(revision 18652)
+++ compile.c	(revision 18653)
@@ -4806,6 +4806,7 @@
 get_exception_sym2type(VALUE sym)
 {
 #undef rb_intern
+#define rb_intern(str) rb_intern_const(str)
     static VALUE symRescue, symEnsure, symRetry;
     static VALUE symBreak, symRedo, symNext;
 
Index: range.c
===================================================================
--- range.c	(revision 18652)
+++ range.c	(revision 18653)
@@ -897,6 +897,7 @@
 Init_Range(void)
 {
 #undef rb_intern
+#define rb_intern(str) rb_intern_const(str)
 
     id_cmp = rb_intern("<=>");
     id_succ = rb_intern("succ");
Index: thread.c
===================================================================
--- thread.c	(revision 18652)
+++ thread.c	(revision 18653)
@@ -3525,6 +3525,7 @@
 Init_Thread(void)
 {
 #undef rb_intern
+#define rb_intern(str) rb_intern_const(str)
 
     VALUE cThGroup;
 
Index: vm_method.c
===================================================================
--- vm_method.c	(revision 18652)
+++ vm_method.c	(revision 18653)
@@ -1114,6 +1114,7 @@
 Init_eval_method(void)
 {
 #undef rb_intern
+#define rb_intern(str) rb_intern_const(str)
 
     rb_define_method(rb_mKernel, "respond_to?", obj_respond_to, -1);
 
Index: id.c
===================================================================
--- id.c	(revision 18652)
+++ id.c	(revision 18653)
@@ -17,6 +17,7 @@
 Init_id(void)
 {
 #undef rb_intern
+#define rb_intern(str) rb_intern_const(str)
 #define rb_intern(str) rb_intern2(str, strlen(str))
     rb_encoding *enc = rb_usascii_encoding();
 
Index: hash.c
===================================================================
--- hash.c	(revision 18652)
+++ hash.c	(revision 18653)
@@ -2597,6 +2597,7 @@
 Init_Hash(void)
 {
 #undef rb_intern
+#define rb_intern(str) rb_intern_const(str)
 
     id_hash = rb_intern("hash");
     id_yield = rb_intern("yield");
Index: prec.c
===================================================================
--- prec.c	(revision 18652)
+++ prec.c	(revision 18653)
@@ -125,6 +125,7 @@
 Init_Precision(void)
 {
 #undef rb_intern
+#define rb_intern(str) rb_intern_const(str)
 
     rb_mPrecision = rb_define_module("Precision");
     rb_define_singleton_method(rb_mPrecision, "included", prec_included, 1);
Index: numeric.c
===================================================================
--- numeric.c	(revision 18652)
+++ numeric.c	(revision 18653)
@@ -3106,6 +3106,7 @@
 Init_Numeric(void)
 {
 #undef rb_intern
+#define rb_intern(str) rb_intern_const(str)
 
 #if defined(__FreeBSD__) && __FreeBSD__ < 4
     /* allow divide by zero -- Inf */
Index: compar.c
===================================================================
--- compar.c	(revision 18652)
+++ compar.c	(revision 18653)
@@ -199,6 +199,7 @@
 Init_Comparable(void)
 {
 #undef rb_intern
+#define rb_intern(str) rb_intern_const(str)
 
     rb_mComparable = rb_define_module("Comparable");
     rb_define_method(rb_mComparable, "==", cmp_equal, 1);
Index: marshal.c
===================================================================
--- marshal.c	(revision 18652)
+++ marshal.c	(revision 18653)
@@ -1689,6 +1689,7 @@
 Init_marshal(void)
 {
 #undef rb_intern
+#define rb_intern(str) rb_intern_const(str)
 
     VALUE rb_mMarshal = rb_define_module("Marshal");
 
Index: rational.c
===================================================================
--- rational.c	(revision 18652)
+++ rational.c	(revision 18653)
@@ -1470,6 +1470,7 @@
 Init_Rational(void)
 {
 #undef rb_intern
+#define rb_intern(str) rb_intern_const(str)
 
     assert(fprintf(stderr, "assert() is now active\n"));
 

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]