X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/abec5bedacd77b2152e61ec3216ab47bd7272fc9..56d9fe2f0976a30544c45bec229c1199e2e95396:/mydtrace.h diff --git a/mydtrace.h b/mydtrace.h index 6e79767..6c66a08 100644 --- a/mydtrace.h +++ b/mydtrace.h @@ -13,80 +13,39 @@ # include "perldtrace.h" -# if defined(STAP_PROBE_ADDR) && !defined(DEBUGGING) +# define PERL_DTRACE_PROBE_ENTRY(cv) \ + if (PERL_SUB_ENTRY_ENABLED()) \ + Perl_dtrace_probe_call(aTHX_ cv, TRUE); -/* SystemTap 1.2 uses a construct that chokes on passing a char array - * as a char *, in this case hek_key in struct hek. Workaround it - * with a temporary. - */ - -# define ENTRY_PROBE(func, file, line, stash) \ - if (PERL_SUB_ENTRY_ENABLED()) { \ - const char *tmp_func = func; \ - PERL_SUB_ENTRY(tmp_func, file, line, stash); \ - } - -# define RETURN_PROBE(func, file, line, stash) \ - if (PERL_SUB_RETURN_ENABLED()) { \ - const char *tmp_func = func; \ - PERL_SUB_RETURN(tmp_func, file, line, stash); \ - } - -# define LOADING_FILE_PROBE(name) \ - if (PERL_LOADING_FILE_ENABLED()) { \ - const char *tmp_name = name; \ - PERL_LOADING_FILE(tmp_name); \ - } - -# define LOADED_FILE_PROBE(name) \ - if (PERL_LOADED_FILE_ENABLED()) { \ - const char *tmp_name = name; \ - PERL_LOADED_FILE(tmp_name); \ - } - -# else - -# define ENTRY_PROBE(func, file, line, stash) \ - if (PERL_SUB_ENTRY_ENABLED()) { \ - PERL_SUB_ENTRY(func, file, line, stash); \ - } - -# define RETURN_PROBE(func, file, line, stash) \ - if (PERL_SUB_RETURN_ENABLED()) { \ - PERL_SUB_RETURN(func, file, line, stash); \ - } - -# define LOADING_FILE_PROBE(name) \ - if (PERL_LOADING_FILE_ENABLED()) { \ - PERL_LOADING_FILE(name); \ - } +# define PERL_DTRACE_PROBE_RETURN(cv) \ + if (PERL_SUB_ENTRY_ENABLED()) \ + Perl_dtrace_probe_call(aTHX_ cv, FALSE); -# define LOADED_FILE_PROBE(name) \ - if (PERL_LOADED_FILE_ENABLED()) { \ - PERL_LOADED_FILE(name); \ - } +# define PERL_DTRACE_PROBE_FILE_LOADING(name) \ + if (PERL_SUB_ENTRY_ENABLED()) \ + Perl_dtrace_probe_load(aTHX_ name, TRUE); -# endif +# define PERL_DTRACE_PROBE_FILE_LOADED(name) \ + if (PERL_SUB_ENTRY_ENABLED()) \ + Perl_dtrace_probe_load(aTHX_ name, FALSE); -# define OP_ENTRY_PROBE(name) \ - if (PERL_OP_ENTRY_ENABLED()) { \ - PERL_OP_ENTRY(name); \ - } +# define PERL_DTRACE_PROBE_OP(op) \ + if (PERL_OP_ENTRY_ENABLED()) \ + Perl_dtrace_probe_op(aTHX_ op); -# define PHASE_CHANGE_PROBE(new_phase, old_phase) \ - if (PERL_PHASE_CHANGE_ENABLED()) { \ - PERL_PHASE_CHANGE(new_phase, old_phase); \ - } +# define PERL_DTRACE_PROBE_PHASE(phase) \ + if (PERL_OP_ENTRY_ENABLED()) \ + Perl_dtrace_probe_phase(aTHX_ phase); #else /* NOPs */ -# define ENTRY_PROBE(func, file, line, stash) -# define RETURN_PROBE(func, file, line, stash) -# define PHASE_CHANGE_PROBE(new_phase, old_phase) -# define OP_ENTRY_PROBE(name) -# define LOADING_FILE_PROBE(name) -# define LOADED_FILE_PROBE(name) +# define PERL_DTRACE_PROBE_ENTRY(cv) +# define PERL_DTRACE_PROBE_RETURN(cv) +# define PERL_DTRACE_PROBE_FILE_LOADING(cv) +# define PERL_DTRACE_PROBE_FILE_LOADED(cv) +# define PERL_DTRACE_PROBE_OP(op) +# define PERL_DTRACE_PROBE_PHASE(phase) #endif