зеркало из https://github.com/github/ruby.git
* include/ruby/ruby.h (CONST_ID_CACHE): fixed statement expression.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17068 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
7799fe9e9f
Коммит
a31f177eaa
|
@ -1,3 +1,7 @@
|
|||
Tue Jun 10 12:43:19 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* include/ruby/ruby.h (CONST_ID_CACHE): fixed statement expression.
|
||||
|
||||
Tue Jun 10 11:25:15 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* ruby.c (rb_argv0): revised for ext/tk.
|
||||
|
|
|
@ -765,20 +765,20 @@ ID rb_to_id(VALUE);
|
|||
VALUE rb_id2str(ID);
|
||||
|
||||
#define CONST_ID_CACHE(result, str) \
|
||||
({ \
|
||||
{ \
|
||||
static ID rb_intern_id_cache; \
|
||||
if (!rb_intern_id_cache) \
|
||||
rb_intern_id_cache = (rb_intern)(str); \
|
||||
result rb_intern_id_cache; \
|
||||
})
|
||||
}
|
||||
#define CONST_ID(var, str) \
|
||||
do {CONST_ID_CACHE(var =, str);} while (0)
|
||||
do CONST_ID_CACHE(var =, str) while (0)
|
||||
#ifdef __GNUC__
|
||||
/* __builtin_constant_p and statement expression is available
|
||||
* since gcc-2.7.2.3 at least. */
|
||||
#define rb_intern(str) \
|
||||
(__builtin_constant_p(str) ? \
|
||||
CONST_ID_CACHE(/**/, str) : \
|
||||
(CONST_ID_CACHE(/**/, str)) : \
|
||||
rb_intern(str))
|
||||
#endif
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче