diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2015-05-17 20:41:27 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2015-05-17 20:41:27 +0900 |
| commit | 0cae5eaf9423a44589436dc6135f803728629224 (patch) | |
| tree | f98b21a9b2ee9afb33e6a852e892c2adcbe2172a /src/class.c | |
| parent | 579ba2d9e402bd7cb3d2fb230adadf6e7617bf91 (diff) | |
| parent | 2106d4d4464e1eea98e981fffcc19d91e67abc0f (diff) | |
| download | mruby-0cae5eaf9423a44589436dc6135f803728629224.tar.gz mruby-0cae5eaf9423a44589436dc6135f803728629224.zip | |
Merge pull request #2791 from cremno/remove-mrb_define_method_vm
remove mrb_define_method_vm() function
Diffstat (limited to 'src/class.c')
| -rw-r--r-- | src/class.c | 23 |
1 files changed, 2 insertions, 21 deletions
diff --git a/src/class.c b/src/class.c index dc396f277..7ec6e6944 100644 --- a/src/class.c +++ b/src/class.c @@ -347,22 +347,6 @@ mrb_define_method(mrb_state *mrb, struct RClass *c, const char *name, mrb_func_t mrb_define_method_id(mrb, c, mrb_intern_cstr(mrb, name), func, aspec); } -MRB_API void -mrb_define_method_vm(mrb_state *mrb, struct RClass *c, mrb_sym name, mrb_value body) -{ - khash_t(mt) *h = c->mt; - khiter_t k; - struct RProc *p; - - if (!h) h = c->mt = kh_init(mt, mrb); - k = kh_put(mt, mrb, h, name); - p = mrb_proc_ptr(body); - kh_value(h, k) = p; - if (p) { - mrb_field_write_barrier(mrb, (struct RBasic *)c, (struct RBasic *)p); - } -} - /* a function to raise NotImplementedError with current method name */ MRB_API void mrb_notimplement(mrb_state *mrb) @@ -1516,7 +1500,7 @@ mrb_alias_method(mrb_state *mrb, struct RClass *c, mrb_sym a, mrb_sym b) { struct RProc *m = mrb_method_search(mrb, c, b); - mrb_define_method_vm(mrb, c, a, mrb_obj_value(m)); + mrb_define_method_raw(mrb, c, a, m); } /*! @@ -1608,14 +1592,11 @@ mrb_mod_alias(mrb_state *mrb, mrb_value mod) static void undef_method(mrb_state *mrb, struct RClass *c, mrb_sym a) { - mrb_value m; - if (!mrb_obj_respond_to(mrb, c, a)) { mrb_name_error(mrb, a, "undefined method '%S' for class '%S'", mrb_sym2str(mrb, a), mrb_obj_value(c)); } else { - SET_PROC_VALUE(m, 0); - mrb_define_method_vm(mrb, c, a, m); + mrb_define_method_raw(mrb, c, a, NULL); } } |
