* include/ruby/intern.h (rb_str_buf_cat2, rb_str_cat2): optimization

for literals.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18146 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2008-07-21 17:51:49 +00:00
Родитель 2ef807cc34
Коммит c62db0676b
3 изменённых файлов: 39 добавлений и 20 удалений

Просмотреть файл

@ -1,3 +1,8 @@
Tue Jul 22 02:51:46 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
* include/ruby/intern.h (rb_str_buf_cat2, rb_str_cat2): optimization
for literals.
Tue Jul 22 02:50:47 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
* README.EXT, README.EXT.ja (1.5 Manipulating Ruby data): fix the

Просмотреть файл

@ -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*, ...);

Просмотреть файл

@ -28,6 +28,8 @@
#undef rb_str_new2
#undef rb_tainted_str_new2
#undef rb_usascii_str_new2
#undef rb_str_buf_cat2
#undef rb_str_cat2
VALUE rb_cString;
VALUE rb_cSymbol;