diff options
| author | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-09-14 04:48:56 +0000 |
|---|---|---|
| committer | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-09-14 04:48:56 +0000 |
| commit | 8e1a6dc1c1f5c905c7b637f6dab4acf04b1d021a (patch) | |
| tree | 03056311775ca77cb0ced3cabcf70c5e2d6bfba6 | |
| parent | ae1630ba2faaf110999797d60241f8a397e53f4b (diff) | |
| download | ruby-8e1a6dc1c1f5c905c7b637f6dab4acf04b1d021a.tar.gz ruby-8e1a6dc1c1f5c905c7b637f6dab4acf04b1d021a.tar.xz ruby-8e1a6dc1c1f5c905c7b637f6dab4acf04b1d021a.zip | |
* object.c (Init_Object): added metameta-class initialization for
BasicObject, Object, and Module.
The metameta-classes of them are now the metaclass of Class, as the
metameta-calss of Class is.
* object.c (boot_defmetametaclass): added.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@19336 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
| -rw-r--r-- | ChangeLog | 9 | ||||
| -rw-r--r-- | object.c | 9 |
2 files changed, 18 insertions, 0 deletions
@@ -1,3 +1,12 @@ +Sun Sep 14 13:48:03 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp> + + * object.c (Init_Object): added metameta-class initialization for + BasicObject, Object, and Module. + The metameta-classes of them are now the metaclass of Class, as the + metameta-calss of Class is. + + * object.c (boot_defmetametaclass): added. + Sun Sep 14 10:10:43 2008 Tadayoshi Funaba <tadf@dotrb.org> * complex.c (f_{add,mul,sub}): omitted some shortcuts for preserve @@ -2369,6 +2369,12 @@ boot_defclass(const char *name, VALUE super) return obj; } +static void +boot_defmetametaclass(VALUE klass, VALUE metametaclass) +{ + RBASIC(RBASIC(klass)->klass)->klass = metametaclass; +} + /* * Document-class: Class * @@ -2467,6 +2473,9 @@ Init_Object(void) metaclass = rb_make_metaclass(rb_cObject, metaclass); metaclass = rb_make_metaclass(rb_cModule, metaclass); metaclass = rb_make_metaclass(rb_cClass, metaclass); + boot_defmetametaclass(rb_cModule, metaclass); + boot_defmetametaclass(rb_cObject, metaclass); + boot_defmetametaclass(rb_cBasicObject, metaclass); rb_define_private_method(rb_cBasicObject, "initialize", rb_obj_dummy, 0); rb_define_alloc_func(rb_cBasicObject, rb_class_allocate_instance); |
