summaryrefslogtreecommitdiff
path: root/eval.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2001-10-03 07:19:19 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2001-10-03 07:19:19 +0000
commit1fe40b7cc5e92105f636d670d77b059fe4a4c50b (patch)
tree02dfc7bab198fc494d9d4f1f3bf1072d292fed66 /eval.c
parentd902111a57dfcf3c9b017b0ebd1b49f19142168c (diff)
* marshal.c (r_object): better allocation type check for
TYPE_UCLASS. usage of allocation framework is disabled for now. * variable.c (rb_class_path): Module may have subclass. * string.c (rb_str_update): should maintain original negative offset. * string.c (rb_str_subpat_set): ditto * string.c (rb_str_aset): ditto. * re.c (rb_reg_nth_match): should check negative nth. * re.c (rb_reg_nth_defined): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1764 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c53
1 files changed, 9 insertions, 44 deletions
diff --git a/eval.c b/eval.c
index b857f35321..8b37fdf20c 100644
--- a/eval.c
+++ b/eval.c
@@ -3195,15 +3195,8 @@ rb_eval(self, n)
rb_id2name(node->nd_cname));
}
if (super) {
- tmp = RCLASS(klass)->super;
- if (FL_TEST(tmp, FL_SINGLETON)) {
- tmp = RCLASS(tmp)->super;
- }
- while (TYPE(tmp) == T_ICLASS) {
- tmp = RCLASS(tmp)->super;
- }
+ tmp = rb_class_real(RCLASS(klass)->super);
if (tmp != super) {
- super = tmp;
goto override_class;
}
}
@@ -5768,23 +5761,6 @@ rb_obj_call_init(obj, argc, argv)
POP_ITER();
}
-VALUE
-rb_class_new_instance(argc, argv, klass)
- int argc;
- VALUE *argv;
- VALUE klass;
-{
- VALUE obj;
-
- if (FL_TEST(klass, FL_SINGLETON)) {
- rb_raise(rb_eTypeError, "can't create instance of virtual class");
- }
- obj = rb_obj_alloc(klass);
- rb_obj_call_init(obj, argc, argv);
-
- return obj;
-}
-
static VALUE
top_include(argc, argv)
int argc;
@@ -6388,18 +6364,6 @@ proc_new(klass)
return proc;
}
-static VALUE
-proc_s_new(argc, argv, klass)
- int argc;
- VALUE *argv;
- VALUE klass;
-{
- VALUE proc = proc_new(klass);
-
- rb_obj_call_init(proc, argc, argv);
- return proc;
-}
-
VALUE
rb_f_lambda()
{
@@ -7005,7 +6969,7 @@ Init_Proc()
rb_eSysStackError = rb_define_class("SystemStackError", rb_eStandardError);
rb_cProc = rb_define_class("Proc", rb_cObject);
- rb_define_singleton_method(rb_cProc, "new", proc_s_new, -1);
+ rb_define_singleton_method(rb_cProc, "allocate", proc_new, 0);
rb_define_method(rb_cProc, "call", proc_call, -2);
rb_define_method(rb_cProc, "yield", proc_yield, -2);
@@ -7017,10 +6981,12 @@ Init_Proc()
rb_define_global_function("lambda", rb_f_lambda, 0);
rb_define_global_function("binding", rb_f_binding, 0);
rb_cBinding = rb_define_class("Binding", rb_cObject);
+ rb_undef_method(CLASS_OF(rb_cBinding), "allocate");
rb_undef_method(CLASS_OF(rb_cBinding), "new");
rb_define_method(rb_cBinding, "clone", bind_clone, 0);
rb_cMethod = rb_define_class("Method", rb_cObject);
+ rb_undef_method(CLASS_OF(rb_cMethod), "allocate");
rb_undef_method(CLASS_OF(rb_cMethod), "new");
rb_define_method(rb_cMethod, "==", method_eq, 1);
rb_define_method(rb_cMethod, "clone", method_clone, 0);
@@ -8913,9 +8879,7 @@ struct thgroup {
};
static VALUE
-thgroup_s_new(argc, argv, klass)
- int argc;
- VALUE *argv;
+thgroup_s_alloc(klass)
VALUE klass;
{
VALUE group;
@@ -8925,7 +8889,6 @@ thgroup_s_new(argc, argv, klass)
group = Data_Make_Struct(klass, struct thgroup, 0, free, data);
data->gid = serial++;
- rb_obj_call_init(group, argc, argv);
return group;
}
@@ -8972,6 +8935,7 @@ Init_Thread()
rb_eThreadError = rb_define_class("ThreadError", rb_eStandardError);
rb_cThread = rb_define_class("Thread", rb_cObject);
+ rb_undef_method(CLASS_OF(rb_cThread), "allocate");
rb_define_singleton_method(rb_cThread, "new", rb_thread_s_new, -1);
rb_define_method(rb_cThread, "initialize", rb_thread_initialize, -2);
@@ -9022,15 +8986,16 @@ Init_Thread()
curr_thread = main_thread->prev = main_thread->next = main_thread;
rb_cCont = rb_define_class("Continuation", rb_cObject);
+ rb_undef_method(CLASS_OF(rb_cCont), "allocate");
rb_undef_method(CLASS_OF(rb_cCont), "new");
rb_define_method(rb_cCont, "call", rb_cont_call, -1);
rb_define_global_function("callcc", rb_callcc, 0);
cThGroup = rb_define_class("ThreadGroup", rb_cObject);
- rb_define_singleton_method(cThGroup, "new", thgroup_s_new, -1);
+ rb_define_singleton_method(cThGroup, "allocate", thgroup_s_alloc, 0);
rb_define_method(cThGroup, "list", thgroup_list, 0);
rb_define_method(cThGroup, "add", thgroup_add, 1);
- rb_define_const(cThGroup, "Default", thgroup_s_new(0, 0, cThGroup));
+ rb_define_const(cThGroup, "Default", rb_obj_alloc(cThGroup));
}
static VALUE