diff options
Diffstat (limited to 'vm_insnhelper.c')
-rw-r--r-- | vm_insnhelper.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/vm_insnhelper.c b/vm_insnhelper.c index 554aad47b1..32b0851320 100644 --- a/vm_insnhelper.c +++ b/vm_insnhelper.c @@ -13,6 +13,7 @@ #include <math.h> #include "constant.h" #include "internal.h" +#include "probes.h" /* control stack frame */ @@ -1431,6 +1432,7 @@ vm_call_cfunc_with_frame(rb_thread_t *th, rb_control_frame_t *reg_cfp, rb_call_i int len = cfunc->argc; VALUE recv = ci->recv; + RUBY_DTRACE_FUNC_ENTRY_HOOK(me->klass, me->called_id); EXEC_EVENT_HOOK(th, RUBY_EVENT_C_CALL, recv, me->called_id, me->klass); vm_push_frame(th, 0, VM_FRAME_MAGIC_CFUNC, recv, ci->defined_class, @@ -1449,6 +1451,7 @@ vm_call_cfunc_with_frame(rb_thread_t *th, rb_control_frame_t *reg_cfp, rb_call_i vm_pop_frame(th); EXEC_EVENT_HOOK(th, RUBY_EVENT_C_RETURN, recv, me->called_id, me->klass); + RUBY_DTRACE_FUNC_RETURN_HOOK(me->klass, me->called_id); return val; } @@ -1496,6 +1499,7 @@ vm_call_cfunc(rb_thread_t *th, rb_control_frame_t *reg_cfp, rb_call_info_t *ci) if (len >= 0) rb_check_arity(ci->argc, len, len); + RUBY_DTRACE_FUNC_ENTRY_HOOK(me->klass, me->called_id); EXEC_EVENT_HOOK(th, RUBY_EVENT_C_CALL, recv, me->called_id, me->klass); if (!(ci->me->flag & NOEX_PROTECTED) && @@ -1505,6 +1509,7 @@ vm_call_cfunc(rb_thread_t *th, rb_control_frame_t *reg_cfp, rb_call_info_t *ci) val = vm_call_cfunc_latter(th, reg_cfp, ci); EXEC_EVENT_HOOK(th, RUBY_EVENT_C_RETURN, recv, me->called_id, me->klass); + RUBY_DTRACE_FUNC_RETURN_HOOK(me->klass, me->called_id); return val; } @@ -1553,6 +1558,7 @@ vm_call_bmethod_body(rb_thread_t *th, rb_call_info_t *ci, const VALUE *argv) rb_proc_t *proc; VALUE val; + RUBY_DTRACE_FUNC_ENTRY_HOOK(ci->me->klass, ci->me->called_id); EXEC_EVENT_HOOK(th, RUBY_EVENT_CALL, ci->recv, ci->me->called_id, ci->me->klass); /* control block frame */ @@ -1561,6 +1567,7 @@ vm_call_bmethod_body(rb_thread_t *th, rb_call_info_t *ci, const VALUE *argv) val = vm_invoke_proc(th, proc, ci->recv, ci->defined_class, ci->argc, argv, ci->blockptr); EXEC_EVENT_HOOK(th, RUBY_EVENT_RETURN, ci->recv, ci->me->called_id, ci->me->klass); + RUBY_DTRACE_FUNC_RETURN_HOOK(ci->me->klass, ci->me->called_id); return val; } |