diff options
author | Sverker Eriksson <[email protected]> | 2016-09-29 17:38:54 +0200 |
---|---|---|
committer | Sverker Eriksson <[email protected]> | 2016-10-14 14:29:16 +0200 |
commit | 870d49f0f8d383e62ea231700089933c4cf8fe2a (patch) | |
tree | 0f6076b91cff9b43db4964a7cff537f5e443177b /lib/hipe/rtl/hipe_rtl_primops.erl | |
parent | e77d7a8417368617c4c228af9556a7f6a8f3e84c (diff) | |
download | otp-870d49f0f8d383e62ea231700089933c4cf8fe2a.tar.gz otp-870d49f0f8d383e62ea231700089933c4cf8fe2a.tar.bz2 otp-870d49f0f8d383e62ea231700089933c4cf8fe2a.zip |
hipe,erts: Remove cached fun 'native_address'
Did not work with purge and made worse by new purge strategy.
Did yield terrible performance when fun thing is created *before*
fun code is loaded. Like when receiving not yet loaded fun
from other node. The cached 'native_address' in ErlFunThing
will not be updated leading to mode switch and error_handler
being called for every call to the fun from native code.
Diffstat (limited to 'lib/hipe/rtl/hipe_rtl_primops.erl')
-rw-r--r-- | lib/hipe/rtl/hipe_rtl_primops.erl | 3 |
1 files changed, 0 insertions, 3 deletions
diff --git a/lib/hipe/rtl/hipe_rtl_primops.erl b/lib/hipe/rtl/hipe_rtl_primops.erl index 835f489ec0..154c2a8c57 100644 --- a/lib/hipe/rtl/hipe_rtl_primops.erl +++ b/lib/hipe/rtl/hipe_rtl_primops.erl @@ -760,12 +760,9 @@ gen_fun_thing_skeleton(FunP, FunName={_Mod,_FunId,Arity}, NumFree, %% And creates a fe (at load time). FeVar = hipe_rtl:mk_new_reg(), PidVar = hipe_rtl:mk_new_reg_gcsafe(), - NativeVar = hipe_rtl:mk_new_reg(), [hipe_rtl:mk_load_address(FeVar, {FunName, MagicNr, Index}, closure), store_struct_field(FunP, ?EFT_FE, FeVar), - load_struct_field(NativeVar, FeVar, ?EFE_NATIVE_ADDRESS), - store_struct_field(FunP, ?EFT_NATIVE_ADDRESS, NativeVar), store_struct_field(FunP, ?EFT_ARITY, hipe_rtl:mk_imm(Arity-NumFree)), |