summaryrefslogtreecommitdiffstats
path: root/include/ruby
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-07-21 17:51:49 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-07-21 17:51:49 +0000
commit6112c433b852aad6e9a6ed0839352c6d600b1b24 (patch)
tree483171c27db24cf45614a509768300b04a312ba8 /include/ruby
parent37ec3b72b7d40f5f4e1168e879176bbba72dbb78 (diff)
downloadruby-6112c433b852aad6e9a6ed0839352c6d600b1b24.tar.gz
ruby-6112c433b852aad6e9a6ed0839352c6d600b1b24.tar.xz
ruby-6112c433b852aad6e9a6ed0839352c6d600b1b24.zip
* include/ruby/intern.h (rb_str_buf_cat2, rb_str_cat2): optimization
for literals. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@18146 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'include/ruby')
-rw-r--r--include/ruby/intern.h52
1 files changed, 32 insertions, 20 deletions
diff --git a/include/ruby/intern.h b/include/ruby/intern.h
index b009384d9..29fa2c2a2 100644
--- a/include/ruby/intern.h
+++ b/include/ruby/intern.h
@@ -537,26 +537,6 @@ VALUE rb_str_buf_new2(const char*);
VALUE rb_str_tmp_new(long);
VALUE rb_usascii_str_new(const char*, long);
VALUE rb_usascii_str_new2(const char*);
-#if defined __GNUC__
-#define rb_str_new2(str) __extension__ ( \
-{ \
- (__builtin_constant_p(str)) ? \
- rb_str_new(str, strlen(str)) : \
- rb_str_new2(str); \
-})
-#define rb_tainted_str_new2(str) __extension__ ( \
-{ \
- (__builtin_constant_p(str)) ? \
- rb_tainted_str_new(str, strlen(str)) : \
- rb_tainted_str_new2(str); \
-})
-#define rb_usascii_str_new2(str) __extension__ ( \
-{ \
- (__builtin_constant_p(str)) ? \
- rb_usascii_str_new(str, strlen(str)) : \
- rb_usascii_str_new2(str); \
-})
-#endif
void rb_str_free(VALUE);
void rb_str_shared_replace(VALUE, VALUE);
VALUE rb_str_buf_append(VALUE, VALUE);
@@ -598,6 +578,38 @@ void rb_str_setter(VALUE, ID, VALUE*);
VALUE rb_str_intern(VALUE);
VALUE rb_sym_to_s(VALUE);
VALUE rb_str_length(VALUE);
+#if defined __GNUC__
+#define rb_str_new2(str) __extension__ ( \
+{ \
+ (__builtin_constant_p(str)) ? \
+ rb_str_new(str, strlen(str)) : \
+ rb_str_new2(str); \
+})
+#define rb_tainted_str_new2(str) __extension__ ( \
+{ \
+ (__builtin_constant_p(str)) ? \
+ rb_tainted_str_new(str, strlen(str)) : \
+ rb_tainted_str_new2(str); \
+})
+#define rb_usascii_str_new2(str) __extension__ ( \
+{ \
+ (__builtin_constant_p(str)) ? \
+ rb_usascii_str_new(str, strlen(str)) : \
+ rb_usascii_str_new2(str); \
+})
+#define rb_str_buf_cat2(str, ptr) __extension__ ( \
+{ \
+ (__builtin_constant_p(ptr)) ? \
+ rb_str_buf_cat(str, ptr, strlen(ptr)) : \
+ rb_str_buf_cat2(str, ptr); \
+})
+#define rb_str_cat2(str, ptr) __extension__ ( \
+{ \
+ (__builtin_constant_p(ptr)) ? \
+ rb_str_cat(str, ptr, strlen(ptr)) : \
+ rb_str_cat2(str, ptr); \
+})
+#endif
/* struct.c */
VALUE rb_struct_new(VALUE, ...);
VALUE rb_struct_define(const char*, ...);