summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-09-14 04:48:56 +0000
committeryugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-09-14 04:48:56 +0000
commit8e1a6dc1c1f5c905c7b637f6dab4acf04b1d021a (patch)
tree03056311775ca77cb0ced3cabcf70c5e2d6bfba6
parentae1630ba2faaf110999797d60241f8a397e53f4b (diff)
downloadruby-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--ChangeLog9
-rw-r--r--object.c9
2 files changed, 18 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index c06fbcd54..1add9d7df 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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
diff --git a/object.c b/object.c
index 58b6235a8..560092d07 100644
--- a/object.c
+++ b/object.c
@@ -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);