aboutsummaryrefslogtreecommitdiffstats
path: root/src/data.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/data.c')
-rw-r--r--src/data.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/src/data.c b/src/data.c
index 4973d577c1c..2360033bb6b 100644
--- a/src/data.c
+++ b/src/data.c
@@ -912,10 +912,24 @@ signal a `cyclic-function-indirection' error. */)
912 register Lisp_Object function = XSYMBOL (symbol)->u.s.function; 912 register Lisp_Object function = XSYMBOL (symbol)->u.s.function;
913 913
914 if (!NILP (Vnative_comp_enable_subr_trampolines) 914 if (!NILP (Vnative_comp_enable_subr_trampolines)
915 && SUBRP (function)
916 && !NATIVE_COMP_FUNCTIONP (function)
917 && !EQ (definition, Fsymbol_function (symbol))) 915 && !EQ (definition, Fsymbol_function (symbol)))
918 calln (Qcomp_subr_trampoline_install, symbol); 916 {
917 if (SUBRP (function) && !NATIVE_COMP_FUNCTIONP (function))
918 calln (Qcomp_subr_trampoline_install, symbol);
919 else if (NATIVE_COMP_FUNCTIONP (function))
920 {
921 if (!EQ (symbol, intern_c_string ("--anonymous-lambda"))
922 && native_comp_local_function_p (function)
923 && !(NATIVE_COMP_FUNCTIONP (definition)
924 && EQ (Fsubr_native_comp_unit (function),
925 Fsubr_native_comp_unit (definition))))
926 {
927 calln (intern_c_string ("require"), intern_c_string ("comp-run"));
928 calln (intern_c_string ("comp-local-function-trampoline-install"),
929 symbol, function);
930 }
931 }
932 }
919#endif 933#endif
920 934
921 set_symbol_function (symbol, definition); 935 set_symbol_function (symbol, definition);