From db437b04a4e91e3f79e41eb71406c5167caaa876 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Tue, 22 Aug 2017 14:23:46 +0900 Subject: `mrb_obj_respond_to` to use `mrb_method_search_vm`. --- src/class.c | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) (limited to 'src/class.c') diff --git a/src/class.c b/src/class.c index 9bba28684..57d5af1df 100644 --- a/src/class.c +++ b/src/class.c @@ -1563,25 +1563,13 @@ mrb_obj_not_equal_m(mrb_state *mrb, mrb_value self) MRB_API mrb_bool mrb_obj_respond_to(mrb_state *mrb, struct RClass* c, mrb_sym mid) { - khiter_t k; - - while (c) { - khash_t(mt) *h = c->mt; + struct RProc *m; - if (h) { - k = kh_get(mt, mrb, h, mid); - if (k != kh_end(h)) { - if (kh_value(h, k)) { - return TRUE; /* method exists */ - } - else { - return FALSE; /* undefined method */ - } - } - } - c = c->super; + m = mrb_method_search_vm(mrb, &c, mid); + if (!m) { + return FALSE; } - return FALSE; /* no method */ + return TRUE; } MRB_API mrb_bool -- cgit v1.2.3