From b53d91e6e231299ce6feb99b428c3abd26679a66 Mon Sep 17 00:00:00 2001 From: h2so5 Date: Sat, 1 Feb 2014 12:22:28 +0900 Subject: fix NODE_SPLAT codegen --- src/array.c | 17 ----------------- src/codegen.c | 9 +-------- src/kernel.c | 18 ++++++++++++++++++ 3 files changed, 19 insertions(+), 25 deletions(-) (limited to 'src') diff --git a/src/array.c b/src/array.c index 8245ddd1c..dbd6b4263 100644 --- a/src/array.c +++ b/src/array.c @@ -1192,22 +1192,6 @@ mrb_ary_eql(mrb_state *mrb, mrb_value ary1) return mrb_true_value(); } -static mrb_value -mrb_ary_ceqq(mrb_state *mrb, mrb_value ary) -{ - mrb_value v; - mrb_int i, len; - mrb_sym eqq = mrb_intern_lit(mrb, "==="); - - mrb_get_args(mrb, "o", &v); - len = RARRAY_LEN(ary); - for (i=0; i", mrb_ary_cmp, MRB_ARGS_REQ(1)); /* 15.2.12.5.36 (x) */ - mrb_define_method(mrb, a, "__case_eqq", mrb_ary_ceqq, MRB_ARGS_REQ(1)); /* internal */ } diff --git a/src/codegen.c b/src/codegen.c index 931da06e1..71b0c9a74 100644 --- a/src/codegen.c +++ b/src/codegen.c @@ -1515,14 +1515,7 @@ codegen(codegen_scope *s, node *tree, int val) break; case NODE_SPLAT: - { - int idx = new_msym(s, mrb_intern_lit(s->mrb, "to_a")); - - codegen(s, tree, VAL); - pop(); - genop(s, MKOP_ABC(OP_SEND, cursp(), idx, 0)); - push(); - } + codegen(s, tree, VAL); break; case NODE_ASGN: diff --git a/src/kernel.c b/src/kernel.c index d1e192464..b17977052 100644 --- a/src/kernel.c +++ b/src/kernel.c @@ -1108,6 +1108,23 @@ mrb_obj_singleton_methods_m(mrb_state *mrb, mrb_value self) return mrb_obj_singleton_methods(mrb, recur, self); } +static mrb_value +mrb_obj_ceqq(mrb_state *mrb, mrb_value self) +{ + mrb_value v; + mrb_int i, len; + mrb_sym eqq = mrb_intern_lit(mrb, "==="); + mrb_value ary = mrb_ary_splat(mrb, self); + + mrb_get_args(mrb, "o", &v); + len = RARRAY_LEN(ary); + for (i=0; iobject_class, mrb->kernel_module); mrb_alias_method(mrb, mrb->module_class, mrb_intern_lit(mrb, "dup"), mrb_intern_lit(mrb, "clone")); -- cgit v1.2.3