aboutsummaryrefslogtreecommitdiffstats
path: root/probes_helper.h
diff options
context:
space:
mode:
Diffstat (limited to 'probes_helper.h')
-rw-r--r--probes_helper.h16
1 files changed, 12 insertions, 4 deletions
diff --git a/probes_helper.h b/probes_helper.h
index c8d8c9840b..7f4beb944f 100644
--- a/probes_helper.h
+++ b/probes_helper.h
@@ -18,11 +18,19 @@
} \
} \
-#define RUBY_DTRACE_METHOD_RETURN_HOOK(klass, id) \
+#define RUBY_DTRACE_METHOD_RETURN_HOOK(th, klass, id) \
if (RUBY_DTRACE_METHOD_RETURN_ENABLED()) { \
- const char * classname = rb_class2name((klass)); \
- const char * methodname = rb_id2name((id)); \
- const char * filename = rb_sourcefile(); \
+ VALUE _klass = (klass); \
+ VALUE _id = (id); \
+ const char * classname; \
+ const char * methodname; \
+ const char * filename; \
+ if (!_klass) { \
+ rb_thread_method_id_and_class((th), &_id, &_klass); \
+ } \
+ classname = rb_class2name(_klass); \
+ methodname = rb_id2name(_id); \
+ filename = rb_sourcefile(); \
if (classname && methodname && filename) { \
RUBY_DTRACE_METHOD_RETURN( \
classname, \