diff options
author | Luis Rascao <luis.rascao@miniclip.com> | 2019-09-13 14:51:33 +0100 |
---|---|---|
committer | Luis Rascao <luis.rascao@miniclip.com> | 2019-09-17 08:49:33 +0100 |
commit | cf766a6e82e07e520c98f087965f024e76dac0dd (patch) | |
tree | 8a60090007bf64b2f77ce574c9feb813cf79a954 /erts/emulator/beam/instrs.tab | |
parent | 40323104481d0813da9286e786af7f43a336b916 (diff) | |
download | erlang-cf766a6e82e07e520c98f087965f024e76dac0dd.tar.gz |
Add missing dtrace return invocations
Some return paths were not going through dtrace
hooks so no function-return probes were being triggered
on dtrace/systemtap.
The return probe will now inform the user of which function
it returns *from* as opposed the previous behaviour of
informing where it returns *to*.
Diffstat (limited to 'erts/emulator/beam/instrs.tab')
-rw-r--r-- | erts/emulator/beam/instrs.tab | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/erts/emulator/beam/instrs.tab b/erts/emulator/beam/instrs.tab index 9396c09182..f53d60a5db 100644 --- a/erts/emulator/beam/instrs.tab +++ b/erts/emulator/beam/instrs.tab @@ -135,6 +135,7 @@ move_deallocate_return(Src, Deallocate) { Eterm src = $Src; E = ADD_BYTE_OFFSET(E, bytes_to_pop); x(0) = src; + DTRACE_RETURN_FROM_PC(c_p, I); $RETURN(); CHECK_TERM(x(0)); $DISPATCH_RETURN(); @@ -374,9 +375,8 @@ i_call_fun_last(Fun, Deallocate) { return() { //| -no_next + DTRACE_RETURN_FROM_PC(c_p, I); $RETURN(); - - DTRACE_RETURN_FROM_PC(c_p); CHECK_TERM(r(0)); HEAP_SPACE_VERIFIED(0); @@ -672,6 +672,7 @@ move_window5(S1, S2, S3, S4, S5, D) { move_return(Src) { //| -no_next x(0) = $Src; + DTRACE_RETURN_FROM_PC(c_p, I); $RETURN(); $DISPATCH_RETURN(); } |