diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-10-28 06:58:19 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-10-28 06:58:19 +0000 |
commit | 6d4727c30c53699dfd7ce983c317de7001a5a8fc (patch) | |
tree | 943e908437fb3ba74c2856509b6cdaba34f8bc54 /internal.h | |
parent | ad07380679b5c7217c486fb217e3a95bea8bb54a (diff) | |
download | ruby-6d4727c30c53699dfd7ce983c317de7001a5a8fc.tar.gz |
internal.h: RB_OBJ_BUILTIN_TYPE
* internal.h (RB_OBJ_BUILTIN_TYPE): special-const safe
BUILTIN_TYPE.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56510 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'internal.h')
-rw-r--r-- | internal.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/internal.h b/internal.h index 116654ef91..c7e80aa978 100644 --- a/internal.h +++ b/internal.h @@ -1682,6 +1682,24 @@ do { \ } \ } while (0) +#define RB_OBJ_BUILTIN_TYPE(obj) rb_obj_builtin_type(obj) +#define OBJ_BUILTIN_TYPE(obj) RB_OBJ_BUILTIN_TYPE(obj) +#ifdef __GNUC__ +#define rb_obj_builtin_type(obj) \ +__extension__({ \ + VALUE arg_obj = (obj); \ + RB_SPECIAL_CONST_P(arg_obj) ? -1 : \ + RB_BUILTIN_TYPE(arg_obj); \ + }) +#else +static inline int +rb_obj_builtin_type(VALUE obj) +{ + return RB_SPECIAL_CONST_P(obj) ? -1 : + RB_BUILTIN_TYPE(obj); +} +#endif + #if defined(__cplusplus) #if 0 { /* satisfy cc-mode */ |