From d5893b91faa7dc77ca6c9728d1054dabd757aead Mon Sep 17 00:00:00 2001 From: ko1 Date: Thu, 24 May 2012 06:36:44 +0000 Subject: [PATCH] * vm_method.c (rb_method_defined_by): removed. nobu pointed out that rb_method_basic_definition_p() is enough for last commit. * error.c, eval_error.c: change for above. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35770 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 8 ++++++++ error.c | 10 ++++++++-- eval_error.c | 4 +++- internal.h | 1 - vm_method.c | 16 ---------------- 5 files changed, 19 insertions(+), 20 deletions(-) diff --git a/ChangeLog b/ChangeLog index 655bac0555..6787a6c653 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +Thu May 24 15:33:01 2012 Koichi Sasada + + * vm_method.c (rb_method_defined_by): removed. + nobu pointed out that rb_method_basic_definition_p() is enough + for last commit. + + * error.c, eval_error.c: change for above. + Thu May 24 14:30:13 2012 Koichi Sasada * vm.c: add RubyVM::Backtrace object (btobj). diff --git a/error.c b/error.c index 1be043057a..88c4c226cd 100644 --- a/error.c +++ b/error.c @@ -717,10 +717,16 @@ rb_check_backtrace(VALUE bt) * */ +static VALUE +exc_set_backtrace(VALUE exc, VALUE bt) +{ + return rb_iv_set(exc, "bt", rb_check_backtrace(bt)); +} + VALUE rb_exc_set_backtrace(VALUE exc, VALUE bt) { - return rb_iv_set(exc, "bt", rb_check_backtrace(bt)); + return exc_set_backtrace(exc, bt); } static VALUE @@ -1678,7 +1684,7 @@ Init_Exception(void) rb_define_method(rb_eException, "message", exc_message, 0); rb_define_method(rb_eException, "inspect", exc_inspect, 0); rb_define_method(rb_eException, "backtrace", exc_backtrace, 0); - rb_define_method(rb_eException, "set_backtrace", rb_exc_set_backtrace, 1); + rb_define_method(rb_eException, "set_backtrace", exc_set_backtrace, 1); rb_eSystemExit = rb_define_class("SystemExit", rb_eException); rb_define_method(rb_eSystemExit, "initialize", exit_initialize, -1); diff --git a/eval_error.c b/eval_error.c index a2e95a759f..dc9e99d4f5 100644 --- a/eval_error.c +++ b/eval_error.c @@ -55,13 +55,15 @@ rb_get_backtrace(VALUE info) return get_backtrace(info); } +VALUE rb_exc_set_backtrace(VALUE exc, VALUE bt); + static void set_backtrace(VALUE info, VALUE bt) { ID set_backtrace = rb_intern("set_backtrace"); if (rb_backtrace_p(bt)) { - if (rb_method_defined_by(info, set_backtrace, rb_exc_set_backtrace)) { + if (rb_method_basic_definition_p(CLASS_OF(info), set_backtrace)) { rb_exc_set_backtrace(info, bt); return; } diff --git a/internal.h b/internal.h index 6ba8e1f3b0..99fd4fe21c 100644 --- a/internal.h +++ b/internal.h @@ -83,7 +83,6 @@ void rb_gc_mark_encodings(void); NORETURN(PRINTF_ARGS(void rb_compile_bug(const char*, int, const char*, ...), 3, 4)); VALUE rb_check_backtrace(VALUE); NORETURN(void rb_async_bug_errno(const char *,int)); -VALUE rb_exc_set_backtrace(VALUE exc, VALUE bt); /* eval_error.c */ void ruby_error_print(void); diff --git a/vm_method.c b/vm_method.c index 8c606d410c..a22c917880 100644 --- a/vm_method.c +++ b/vm_method.c @@ -1401,19 +1401,3 @@ Init_eval_method(void) REPLICATE_METHOD(rb_eException, respond_to_missing, NOEX_PUBLIC); } } - -int -rb_method_defined_by(VALUE obj, ID mid, VALUE (*cfunc)(ANYARGS)) -{ - rb_method_entry_t *me = search_method(CLASS_OF(obj), mid); - - if (me && me->def && - me->def->type == VM_METHOD_TYPE_CFUNC && - me->def->body.cfunc.func == cfunc) { - return 1; - } - else { - return 0; - } -} -