diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-05-19 04:58:36 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-05-19 04:58:36 +0000 |
commit | 7d1f48b5c3768aba7f742532f00dd3d5a404a819 (patch) | |
tree | cc5974a423a78150d3e682814e542e44b459b32f /class.c | |
parent | 6009d184ff73b623ec4eaba1a636f8abd5747b4a (diff) |
* struct.c (struct_ivar_get): new function to avoid repeated
rb_intern() calls.
* struct.c (rb_struct_iv_get): use struct_ivar_get()
* struct.c (num_members): ditto.
* struct.c (rb_struct_s_members): ditto.
* class.c (rb_singleton_class): cache symbol to reduce calls to
rb_intern().
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23488 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'class.c')
-rw-r--r-- | class.c | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -857,6 +857,7 @@ VALUE rb_singleton_class(VALUE obj) { VALUE klass; + ID attached; if (FIXNUM_P(obj) || SYMBOL_P(obj)) { rb_raise(rb_eTypeError, "can't define singleton"); @@ -868,8 +869,9 @@ rb_singleton_class(VALUE obj) rb_bug("unknown immediate %ld", obj); } + CONST_ID(attached, "__attached__"); if (FL_TEST(RBASIC(obj)->klass, FL_SINGLETON) && - rb_iv_get(RBASIC(obj)->klass, "__attached__") == obj) { + rb_ivar_get(RBASIC(obj)->klass, attached) == obj) { klass = RBASIC(obj)->klass; } else { |