diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2019-04-19 12:52:57 -0700 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2019-04-19 12:57:30 -0700 |
commit | bc4ed68314e51d784c03a06385f294db80f9a3bd (patch) | |
tree | 366412b02d402c16d2a384f2965685b951593258 | |
parent | 7d84056df4b228509b723b11d69bf39e3d1e548a (diff) | |
download | emacs-bc4ed68314e51d784c03a06385f294db80f9a3bd.tar.gz emacs-bc4ed68314e51d784c03a06385f294db80f9a3bd.tar.bz2 emacs-bc4ed68314e51d784c03a06385f294db80f9a3bd.zip |
Fix comment and tweak eval_sub
* src/eval.c (eval_sub): Check whether Fassq returns Qnil,
not whether it returns a cons, as NILP is faster than CONSP
nowadays. Remove incorrect comment “only original_fun and
original_args have values that will be used below”; instead,
move declarations around so that the set of variables with
useful values is obvious.
-rw-r--r-- | src/eval.c | 27 |
1 files changed, 10 insertions, 17 deletions
diff --git a/src/eval.c b/src/eval.c index a2b95172d87..a636f6c50ae 100644 --- a/src/eval.c +++ b/src/eval.c @@ -2153,14 +2153,6 @@ record_in_backtrace (Lisp_Object function, Lisp_Object *args, ptrdiff_t nargs) Lisp_Object eval_sub (Lisp_Object form) { - Lisp_Object fun, val, original_fun, original_args; - Lisp_Object funcar; - ptrdiff_t count; - - /* Declare here, as this array may be accessed by call_debugger near - the end of this function. See Bug#21245. */ - Lisp_Object argvals[8]; - if (SYMBOLP (form)) { /* Look up its binding in the lexical environment. @@ -2170,10 +2162,7 @@ eval_sub (Lisp_Object form) = !NILP (Vinternal_interpreter_environment) /* Mere optimization! */ ? Fassq (form, Vinternal_interpreter_environment) : Qnil; - if (CONSP (lex_binding)) - return XCDR (lex_binding); - else - return Fsymbol_value (form); + return !NILP (lex_binding) ? XCDR (lex_binding) : Fsymbol_value (form); } if (!CONSP (form)) @@ -2191,18 +2180,22 @@ eval_sub (Lisp_Object form) error ("Lisp nesting exceeds `max-lisp-eval-depth'"); } - original_fun = XCAR (form); - original_args = XCDR (form); + Lisp_Object original_fun = XCAR (form); + Lisp_Object original_args = XCDR (form); CHECK_LIST (original_args); /* This also protects them from gc. */ - count = record_in_backtrace (original_fun, &original_args, UNEVALLED); + ptrdiff_t count + = record_in_backtrace (original_fun, &original_args, UNEVALLED); if (debug_on_next_call) do_debug_on_call (Qt, count); - /* At this point, only original_fun and original_args - have values that will be used below. */ + Lisp_Object fun, val, funcar; + /* Declare here, as this array may be accessed by call_debugger near + the end of this function. See Bug#21245. */ + Lisp_Object argvals[8]; + retry: /* Optimize for no indirection. */ |