diff options
author | Sverker Eriksson <[email protected]> | 2011-12-01 20:13:57 +0100 |
---|---|---|
committer | Sverker Eriksson <[email protected]> | 2012-02-09 17:07:05 +0100 |
commit | a17eaa7e2cc2f68fbc9bf5c924c5a230d650b9f1 (patch) | |
tree | d14848a8a9967fb0838c83635871778c8d2545c3 /lib/hipe/icode/hipe_icode_primops.erl | |
parent | 49c136df375a5c9a831f044eb2e3fb3352429cee (diff) | |
download | otp-a17eaa7e2cc2f68fbc9bf5c924c5a230d650b9f1.tar.gz otp-a17eaa7e2cc2f68fbc9bf5c924c5a230d650b9f1.tar.bz2 otp-a17eaa7e2cc2f68fbc9bf5c924c5a230d650b9f1.zip |
hipe,erts: Debug support for native call trace
Diffstat (limited to 'lib/hipe/icode/hipe_icode_primops.erl')
-rw-r--r-- | lib/hipe/icode/hipe_icode_primops.erl | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/hipe/icode/hipe_icode_primops.erl b/lib/hipe/icode/hipe_icode_primops.erl index a413531c07..b0113fc556 100644 --- a/lib/hipe/icode/hipe_icode_primops.erl +++ b/lib/hipe/icode/hipe_icode_primops.erl @@ -137,7 +137,8 @@ is_safe({hipe_bs_primop, {bs_private_append, _, _}}) -> false; is_safe({hipe_bs_primop, bs_init_writable}) -> true; is_safe(#mkfun{}) -> true; is_safe(#unsafe_element{}) -> true; -is_safe(#unsafe_update_element{}) -> true. +is_safe(#unsafe_update_element{}) -> true; +is_safe(debug_native_called) -> false. -spec fails(icode_funcall()) -> boolean(). @@ -237,6 +238,7 @@ fails({hipe_bs_primop, bs_init_writable}) -> true; fails(#mkfun{}) -> false; fails(#unsafe_element{}) -> false; fails(#unsafe_update_element{}) -> false; +fails(debug_native_called) -> false; %% Apparently, we are calling fails/1 for all MFAs which are compiled. %% This is weird and we should restructure the compiler to avoid %% calling fails/1 for things that are not primops. @@ -721,6 +723,8 @@ type(Primop, Args) -> erl_types:t_any(); redtest -> erl_types:t_any(); + debug_native_called -> + erl_types:t_any(); {M, F, A} -> erl_bif_types:type(M, F, A, Args) end. @@ -893,6 +897,8 @@ type(Primop) -> erl_types:t_any(); redtest -> erl_types:t_any(); + debug_native_called -> + erl_types:t_any(); {M, F, A} -> erl_bif_types:type(M, F, A) end. |