diff options
Diffstat (limited to 'vm_backtrace.c')
-rw-r--r-- | vm_backtrace.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/vm_backtrace.c b/vm_backtrace.c index b4f16f68fc..8155c85856 100644 --- a/vm_backtrace.c +++ b/vm_backtrace.c @@ -1287,3 +1287,30 @@ rb_profile_frame_singleton_method_p(VALUE frame) return Qfalse; } } + +VALUE +rb_profile_frame_method_name(VALUE frame) +{ + return rb_iseq_method_name(frame2iseq(frame)); +} + +VALUE +rb_profile_frame_qualified_method_name(VALUE frame) +{ + VALUE method_name = rb_iseq_method_name(frame2iseq(frame)); + if (method_name != Qnil) { + VALUE classpath = rb_profile_frame_classpath(frame); + VALUE singleton_p = rb_profile_frame_singleton_method_p(frame); + + if (classpath != Qnil) { + return rb_sprintf("%"PRIsVALUE"%s%"PRIsVALUE, + classpath, singleton_p == Qtrue ? "." : "#", method_name); + } + else { + return method_name; + } + } + else { + return Qnil; + } +} |