ruby-changes:4403
From: ko1@a...
Date: Thu, 3 Apr 2008 20:01:04 +0900 (JST)
Subject: [ruby-changes:4403] nobu - Ruby:r15894 (trunk): * insns.def (defineclass): check if cbase is a class or a module.
nobu 2008-04-03 19:59:44 +0900 (Thu, 03 Apr 2008)
New Revision: 15894
Modified files:
trunk/ChangeLog
trunk/insns.def
trunk/vm_insnhelper.c
Log:
* insns.def (defineclass): check if cbase is a class or a module.
[ruby-core:16118]
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=15894&r2=15893&diff_format=u
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/insns.def?r1=15894&r2=15893&diff_format=u
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/vm_insnhelper.c?r1=15894&r2=15893&diff_format=u
Index: insns.def
===================================================================
--- insns.def (revision 15893)
+++ insns.def (revision 15894)
@@ -943,6 +943,8 @@
cbase = vm_get_cbase(th);
}
+ vm_check_if_namespace(cbase);
+
/* find klass */
if (rb_const_defined_at(cbase, id)) {
/* already exist */
@@ -981,6 +983,8 @@
cbase = vm_get_cbase(th);
}
+ vm_check_if_namespace(cbase);
+
/* find klass */
if (rb_const_defined_at(cbase, id)) {
klass = rb_const_get_at(cbase, id);
Index: ChangeLog
===================================================================
--- ChangeLog (revision 15893)
+++ ChangeLog (revision 15894)
@@ -1,3 +1,8 @@
+Thu Apr 3 19:59:42 2008 Nobuyoshi Nakada <nobu@r...>
+
+ * insns.def (defineclass): check if cbase is a class or a module.
+ [ruby-core:16118]
+
Thu Apr 3 14:42:11 2008 NAKAMURA Usaku <usa@r...>
* common.mk (INSNS): add insns_info.inc.
Index: vm_insnhelper.c
===================================================================
--- vm_insnhelper.c (revision 15893)
+++ vm_insnhelper.c (revision 15894)
@@ -976,6 +976,19 @@
return val;
}
+static inline void
+vm_check_if_namespace(VALUE klass)
+{
+ switch (TYPE(klass)) {
+ case T_CLASS:
+ case T_MODULE:
+ break;
+ default:
+ rb_raise(rb_eTypeError, "%s is not a class/module",
+ RSTRING_PTR(rb_obj_as_string(klass)));
+ }
+}
+
static inline VALUE
vm_get_ev_const(rb_thread_t *th, rb_iseq_t *iseq,
VALUE klass, ID id, int is_defined)
@@ -1030,14 +1043,7 @@
}
}
else {
- switch (TYPE(klass)) {
- case T_CLASS:
- case T_MODULE:
- break;
- default:
- rb_raise(rb_eTypeError, "%s is not a class/module",
- RSTRING_PTR(rb_obj_as_string(klass)));
- }
+ vm_check_if_namespace(klass);
if (is_defined) {
return rb_const_defined(klass, id);
}
--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/