aboutsummaryrefslogtreecommitdiffstats
path: root/src/bytecode.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/bytecode.c')
-rw-r--r--src/bytecode.c27
1 files changed, 12 insertions, 15 deletions
diff --git a/src/bytecode.c b/src/bytecode.c
index ed6e2b34e77..def20b232c6 100644
--- a/src/bytecode.c
+++ b/src/bytecode.c
@@ -792,22 +792,19 @@ exec_byte_code (Lisp_Object fun, ptrdiff_t args_template,
792 Lisp_Object original_fun = call_fun; 792 Lisp_Object original_fun = call_fun;
793 if (SYMBOLP (call_fun)) 793 if (SYMBOLP (call_fun))
794 call_fun = XSYMBOL (call_fun)->u.s.function; 794 call_fun = XSYMBOL (call_fun)->u.s.function;
795 Lisp_Object template; 795 if (COMPILEDP (call_fun))
796 Lisp_Object bytecode;
797 if (COMPILEDP (call_fun)
798 /* Lexical binding only. */
799 && (template = AREF (call_fun, COMPILED_ARGLIST),
800 FIXNUMP (template))
801 /* No autoloads. */
802 && (bytecode = AREF (call_fun, COMPILED_BYTECODE),
803 !CONSP (bytecode)))
804 { 796 {
805 fun = call_fun; 797 Lisp_Object template = AREF (call_fun, COMPILED_ARGLIST);
806 bytestr = bytecode; 798 if (FIXNUMP (template))
807 args_template = XFIXNUM (template); 799 {
808 nargs = call_nargs; 800 /* Fast path for lexbound functions. */
809 args = call_args; 801 fun = call_fun;
810 goto setup_frame; 802 bytestr = AREF (call_fun, COMPILED_BYTECODE),
803 args_template = XFIXNUM (template);
804 nargs = call_nargs;
805 args = call_args;
806 goto setup_frame;
807 }
811 } 808 }
812 809
813 Lisp_Object val; 810 Lisp_Object val;