aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-05-24 06:36:44 +0000
committerko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-05-24 06:36:44 +0000
commitd5893b91faa7dc77ca6c9728d1054dabd757aead (patch)
tree4997454073bafbda2b0c05559f5d4941603c7b24
parent3dcebce5235276e99a75c6b0c71f4f3c4f4e225c (diff)
downloadruby-d5893b91faa7dc77ca6c9728d1054dabd757aead.tar.gz
* 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
-rw-r--r--ChangeLog8
-rw-r--r--error.c10
-rw-r--r--eval_error.c4
-rw-r--r--internal.h1
-rw-r--r--vm_method.c16
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 <ko1@atdot.net>
+
+ * 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 <ko1@atdot.net>
* 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;
- }
-}
-