From ff3e4b91f282ade0c205b72e18c08ca22acdcdf8 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Sat, 20 Aug 2016 00:03:30 +0900 Subject: Move Module#include and #prepend to class.c; ref #3197 To avoid VM nesting with mrb_funcall() --- mrblib/00class.rb | 15 +++++++++++++++ src/class.c | 38 -------------------------------------- 2 files changed, 15 insertions(+), 38 deletions(-) diff --git a/mrblib/00class.rb b/mrblib/00class.rb index 39e0d5091..f3762e8d0 100644 --- a/mrblib/00class.rb +++ b/mrblib/00class.rb @@ -8,4 +8,19 @@ class Module def attr(name) attr_reader(name) end + + # 15.2.2.4.27 + def include(*args) + args.reverse.each do |m| + m.append_features(self) + m.included(self) + end + end + + def prepend(*args) + args.reverse.each do |m| + m.prepend_features(self) + m.prepended(self) + end + end end diff --git a/src/class.c b/src/class.c index 0f72c7753..47a6c846b 100644 --- a/src/class.c +++ b/src/class.c @@ -947,24 +947,6 @@ mrb_mod_prepend_features(mrb_state *mrb, mrb_value mod) return mod; } -static mrb_value -mrb_mod_prepend(mrb_state *mrb, mrb_value klass) -{ - mrb_value *argv; - mrb_int argc, i; - - mrb_get_args(mrb, "*", &argv, &argc); - for (i=0; i